c++ - 为什么在重载 << 运算符时 const 字不与 ostream 对象一起使用?
问题描述
重载 << 运算符的运算符函数原型为:
friend ostream& operator<<(ostream&, const className&);
我是新手,所以如果能用简单的例子来解释,将不胜感激。谢谢
解决方案
通常,当你写
foo f;
std::cout << f;
您忽略返回的值。请记住,调用运算符类似于调用方法,同一行可以写成:
operator<<(std::cout,f);
对于参数类型,请考虑将某些内容写入流确实会修改流的内部状态。因此,operator<<
采用非常量引用。您不能传递const
对象/引用,因为常量流不允许插入任何内容。
现在链接:
foo f,g;
std::cout << f << g;
如同
operator<<( operator<<( std::cout,f) , g);
------------------------
|
v
returns non-const ref
如果operator<<
将返回一个常量引用,则您无法链接它。
推荐阅读
- ios - 如何为 UIButton 设置 UIBackgroundConfiguration?
- django - 使用 Nginx 部署在云服务器上时,奇怪的 Django 和 Angular “不存在‘Access-Control-Allow-Origin’标头”
- rabbitmq - 阅读一些插件时出现问题:duplicate_plugin
- java - 由 android.content.res.Resources$NotFoundException: Drawable (missing name) with resource ID 即使资源在那里
- python - Plotly - 在循环中生成数字;将所有图形放在单个子图中
- haskell - 创建一个函数 ved 仅使用递归删除列表中最大项目的最后一次出现
- sql - 有两个字段,如何保持唯一元素 2 值的最大数量,但不重复任何元素 1?
- java - 在这种情况下,有没有办法在不导入特定类的情况下导入所有类?
- docker - 连接到在 docker 容器中运行的 postgres
- sql-server - 如果字段为空,如何使用列名构建分隔字符串?