当重载"<<"运算符时,为什么使用"out"而不是"cout"?

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参数选择了更通用的名称.

  • 对此还有一个约定元素,因为它是一个输出流,但不一定是cout. (2认同)