C++中为什么 std::ostream != std::ostream 这两种类型不能对比?

#include<iostream>usingnamespacestd;intmain(){staticstd::ostream*pStream=&(std::cout)... #include <iostream>

using namespace std;

int main()
{
static std::ostream *pStream = &(std::cout);

if (*pStream != cout) cout << " OK! " << endl;

return 0;
}

报错如下:
1 IntelliSense: 没有与这些操作数匹配的 "!=" 运算符
操作数类型为: std::ostream != std::ostream e:\workspace\ZY_3\project\test\test\main.cpp 10

这是为什么呢,有谁能解释一下吗?
展开
 我来答
帐号已注销
2015-10-12 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1239万
展开全部
因为std::ostream类没有重载这个运算符,所以就不能比较(错误提示就给你说清楚了),再者输入输出流是不能复制的和拷贝构造,所以就不存在两个流相等的情况,重载 != 和 == 就没有意义了。

你上面的情况应该比较地址而不是比较对象本身。
追问
谢谢了!主要在编译一个开源库的时候出了这个错,我不知道他们是怎么发布出来的!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式