解决方法
因为cout的操作数< cout是用户定义的类型,表达式实际上是一个函数调用.编译器必须找到最佳运算符<<这与操作数相匹配,在这种情况下,它们都是类型std :: ostream. 有许多候选运算符重载可供选择,但是我将根据通常的重载解析过程描述最终被选中的那个. std :: ostream有一个转换操作符,允许转换为void *.这用于使流测试状态为布尔状态(即允许if(cout)工作). 使用该转换运算符将右侧的操作数表达式cout隐式转换为void const *,然后运算符<<需要ostream&并调用一个void const *来写入此指针值. 请注意,ostream到void *转换产生的实际值是未指定的.该规范仅强制如果流处于不良状态,则返回空指针,否则返回非空指针. 操作者<流插入的重载确实具有返回值:它们返回作为操作数提供的流.这是允许链接插入操作(以及对于输入流,使用>>)的提取操作).
原文地址:https://www.jb51.cc/c/114272.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。