为什么返回类型引用输出流
Why is the return type reference to output stream?
我是c++新手,正在学习操作符重载。现在在下面的代码中,我得到了一切,除了有点困惑的为什么返回类型是对输出流的引用?
有以下enum:
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;
}
为什么返回类型是对输出流的引用?
返回ostream&
使其可以链化,如
std::cout << SON << SAT << MON << TUE << WED << THRUS << FRI;
BTW:输出流不应该(也不能)被复制,所以返回类型是引用(而不是按值)。
ostream类为多种类型的数据重载了插入操作符(<<);Int, char, char*, string…
-
这个操作符的返回类型是一个ostream对象的引用,所以当你调用它时;你可以使用返回类型来打印其他内容打印这些内容的返回类型是对ostream对象的引用你可以用它来打印其他内容等等。
-
当你写:
cout << 1 << "Hello" << 2.7 << endl;
开头的cout输出1并返回一个ostream对象,我们用它来输出"Hello"(调用<<(ostream&, char*)),并返回对ostream对象的引用,所以我们用它来输出2.7等等…
-
上面这行可以翻译为:
(((cout << 1) << "Hello") << 2.7) << endl;
相关文章:
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 在输出流中插入换行符
- 在类外部重载输入和输出流
- 通用容器的输出流
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 获取C++输出流中元素的大小
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 控制多线程程序中的输出流
- 为什么输出流首选" "而不是""?
- C++ 输出流运算符 <<() 中的字符何时加宽?
- 音频缓冲区列表,用于输出流格式已压缩的 AUHAL 单元
- 如何将值发送到标准输出流并在另一个程序中访问这些值
- 我必须如何将OpenCV输出流到我自己的远程C GUI
- 如何为提升日志和自定义类型定义输出流运算符
- 修改视频帧并将其发送回视频输出流
- 组合输入和输出流
- 输出流中引用的奇怪行为
- 为什么返回类型引用输出流
- 如何更改c++输出流以引用cout ?