gpt4 book ai didi

c++ - 我可以得到一个 istream 来放置而不是分配吗?

转载 作者:行者123 更新时间:2023-11-28 02:08:27 25 4
gpt4 key购买 nike

istream operator>> 需要对现有对象的引用。这意味着他们所做的是分配而不是就地构建,对吧?

那么,我怎样才能跳过初始构造呢?也许编译器可以优化它,但我可能仍然需要提供我不想提供的参数。这完全可以用 istream 来完成吗?

...我希望能够拥有,比方说,

template <typename T> void emplace_from(std::istream stream, T* place);

适用于 stream >> my_t_variable 适用的 T 的所有类型。虽然,不可否认,这个函数声明看起来有点难看。

最佳答案

这不能用提取运算符 (std::istream& operator>>(std::istream&, T&)) 完成。

但是对于 std::istream 一般而言,当然。简单地说,实现一个函数 T extract(std::istream&) 或类似的函数。它的实现几乎与提取运算符相同:读取字符流,使用输入初始化一个新对象,返回该对象。然后你可以简单地调用:T t = extract(std::cin)

关于c++ - 我可以得到一个 istream 来放置而不是分配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36576809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com