gpt4 book ai didi

c++ - 在 C++ 中重载 IO 运算符时使用 cout/cin?

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:10 25 4
gpt4 key购买 nike

我正在测试一些与重载 IO 运算符相关的 C++ 代码。代码如下:

class Student {
private:
int no;
public:
Student(int n)
{
this->no = n;
}
int getNo() const {
return this->no;
}
friend istream& operator>>(istream& is, Student& s);
friend ostream& operator<<(ostream& os, const Student& s);
};
ostream& operator<<(ostream& os, const Student& s){
cout << s.getNo(); // use cout instead of os
return os;
}
istream& operator>>(istream& is, Student& s)
{
cin >> s.no; // use cin instead of is
return is;
}

然而,在<<里面和 >> ,我可以使用:

 ostream& operator<<(ostream& os, const Student& s){
os << s.getNo(); // use os instead of cout
return os;
}
istream& operator>>(istream& is, Student& s)
{
is >> s.no; // use is instead of cin
return is;
}

<< ,我使用 os 对象而不是 cout 和 >> 的相似性运算符(operator)。所以,我很想知道这是否有任何区别?

最佳答案

区别很明显,is/os 是输入/输出流,而cin/cout 是标准输入/输出流。 cin/cout 是 i/o 流的实例,而不是同义词。

重点是,除了标准输入/输出之外,还有其他流,例如文件、字符串流以及您能想到的任何自定义实现。如果你在你的流操作符中使用 cin/cout,忽略他们应该读/写的流,那么你最终会得到

file_stream << some_student;

打印到标准输出,而不是它应该打印到的文件。

关于c++ - 在 C++ 中重载 IO 运算符时使用 cout/cin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7383103/

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