为什么 return 类型引用输出流?
Why is the return type reference to output stream?
我是 C++ 新手,正在学习运算符重载。现在在下面的代码中,除了对 为什么 return 类型是对输出流的引用?
有点困惑之外,我得到了所有内容
我们有以下枚举。
enum days{ SON, SAT, MON, TUE, WED, THRUS, FRI };
并且我们正在重载 <<
运算符,以打印日期而不是数值 0、1、2 ... 等等。
密码是:
ostream& operator <<(ostream &,const days &d)
{
switch(d)
{
case SUN: out << "SUN"; break;
case MON: out << "MON"; break;
case TUE: out << "TUE"; break;
case WED: out << "WED"; break;
.....
...
}
return out;
}
why the return type is reference to output stream?
返回 ostream&
可以链接它,比如
std::cout << SON << SAT << MON << TUE << WED << THRUS << FRI;
顺便说一句:Output stream 不应该(也不能)被复制,所以 return 类型是引用(而不是按值)。
ostream class 为许多类型的数据重载了插入运算符 (<<);整数、字符、字符*、字符串...
此运算符的 return 类型是对 ostream 对象的引用,因此当您调用它时;您可以使用 return 类型来打印其他内容,而 return 类型的打印此内容是对 ostream 对象的引用,您可以使用它来打印其他内容等等...
当你写:
cout << 1 << "Hello" << 2.7 << endl;
在开头 cout 打印 1 并且 returns 我们使用它来打印 "Hello"(调用 <<(ostream&, char*))和 returns 的 ostream 对象又是对 ostream 对象的引用,所以我们用它来打印 2.7 等等...
上面这行可以翻译为:
(((cout << 1) << "Hello") << 2.7) << endl;
我是 C++ 新手,正在学习运算符重载。现在在下面的代码中,除了对 为什么 return 类型是对输出流的引用?
有点困惑之外,我得到了所有内容我们有以下枚举。
enum days{ SON, SAT, MON, TUE, WED, THRUS, FRI };
并且我们正在重载 <<
运算符,以打印日期而不是数值 0、1、2 ... 等等。
密码是:
ostream& operator <<(ostream &,const days &d)
{
switch(d)
{
case SUN: out << "SUN"; break;
case MON: out << "MON"; break;
case TUE: out << "TUE"; break;
case WED: out << "WED"; break;
.....
...
}
return out;
}
why the return type is reference to output stream?
返回 ostream&
可以链接它,比如
std::cout << SON << SAT << MON << TUE << WED << THRUS << FRI;
顺便说一句:Output stream 不应该(也不能)被复制,所以 return 类型是引用(而不是按值)。
ostream class 为许多类型的数据重载了插入运算符 (<<);整数、字符、字符*、字符串...
此运算符的 return 类型是对 ostream 对象的引用,因此当您调用它时;您可以使用 return 类型来打印其他内容,而 return 类型的打印此内容是对 ostream 对象的引用,您可以使用它来打印其他内容等等...
当你写:
cout << 1 << "Hello" << 2.7 << endl;
在开头 cout 打印 1 并且 returns 我们使用它来打印 "Hello"(调用 <<(ostream&, char*))和 returns 的 ostream 对象又是对 ostream 对象的引用,所以我们用它来打印 2.7 等等...
上面这行可以翻译为:
(((cout << 1) << "Hello") << 2.7) << endl;