use*_*792 1 c++ operator-overloading
我正在学习运算符重载.当重载"<<"运算符时,正在使用"out"而不是"cout".我不明白为什么.
ostream &operator<<( ostream &out, const IntList &L ) {
out << "[ ";
for (int k=0; k< L.numItems; k++) {
out << L.Items[k] << ' ';
}
out << ']';
}
Run Code Online (Sandbox Code Playgroud)
我想问一下cout和out之间的区别,如果我使用cout而不是out,会发生什么.谢谢你的回答.
mea*_*gar 14
你正在看的是一个重载的"流插入"操作符,允许ostream
使用典型的cout << myObject
语法将一些自定义类写入对象.
调用这种情况下的变量是out
因为它ostream
是传递给函数的对象的名称,它可以是任何输出流,无论是它cout
还是一个fstream
或一个stringstream
.它只是一个变量名,他们可以调用它blah
并编写:
ostream &operator<<( ostream &blah, const IntList &L ) {
blah << "[ ";
// ...
}
Run Code Online (Sandbox Code Playgroud)
通常,您选择一个描述性的变量名称,并且out
输出流的名称非常具有描述性.
cout
将是一个特别糟糕的变量名称,因为它强烈关联std::cout
,用于专门写入标准输出流.此代码不会特定地写入标准输出,它通过运算符写入任何 ostream
对象,<<
因此他们为其ostream
参数选择了更通用的名称.