我有以下代码,其中包含重载输出运算符:
class Student
{
public:
string name;
int age;
Student():name("abc"), age(20){}
friend ostream& operator<<(ostream&, const Student&);
};
ostream& operator<<(ostream& os, const Student& s)
{
os << s.name; // Line 1
return os;
}
我想知道如果我改变了有什么区别 Line 1
进入这个:cout << s.name
?
最佳答案
然后 operator <<
会宣传它可以将学生的名字输出到任何流,但忽略它的参数并始终输出到标准输出。打个比方,这类似于写作
int multiplyByTwo(int number) {
return 4;
}
可以看出,这肯定是有问题的。如果你真的想一直返回 4,那么函数应该是
int multiplyTwoByTwo() {
return 4;
}
当然你做不到operator <<
只接受一个参数,因为它是一个二元运算符,所以这就是类比失效的地方,但你明白了。
关于c++ - 如果在重载的输出运算符函数中使用 cout 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481256/