gpt4 book ai didi

c++ - 运算符按位左移

转载 作者:太空狗 更新时间:2023-10-29 21:40:41 26 4
gpt4 key购买 nike

在使用数据流创建对象后更新对象的推荐方法是什么?我想避免使用许多 SetXX 方法。

假设我有一个看起来像这样的类;

class Model
{
public:
Model(int, double, std::string);
private:
int a;
double b;
std::string c;
};

解决这个问题的一种方法是添加运算符;

friend Model& operator<<(Model&, std::stringstream&)

以上代码的用法;

// create model
Model model(...);

// do stuff

// update model later
model << stream;

此方法编译并运行。

只是想知道这是否是一个好方法,它是否有任何缺陷\限制?请注意,大多数使用 operator<< 的在线示例与我在上面所做的不同。

最佳答案

我建议遵循与标准库中相同的表示法:使用 operator>> 作为输入并返回对流的引用,而不是 Model。这样对于其他人(熟悉标准库但不熟悉你的符号)来说它会更具可读性,并且它会允许链式输入:

friend std::istream & operator>>(std::istream & s, Model & m)
{
m.data = ...
return s;
}

Model m1, m2;
std::cin >> m1 >> m2;

因为 std::istringstream 是从 std::istream 派生的,这个运算符将适用于它以及所有其他输入流类型。

关于c++ - 运算符按位左移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30475977/

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