【发布时间】:2016-02-25 19:31:27
【问题描述】:
我一直认为 cout 和 cin 调用是这样的:
cout << someVar
告诉编译器我们将 someVar 的值转储到 cout 中,就像我们可以将水转储到物理流中一样。同样,
cin >> someVar
告诉编译器用来自 cin 的数据(空格之前的所有内容)填充 someVar,就像我们可以用物理流中的水填充桶一样。
但是 > 是按位运算符。 > 将位向右移动。为什么cout << Hello World 和cout << My name is John 不让控制台不说“Hello World”?
编辑: 这不是“运算符重载”的重复,因为虽然该问题可能隐含地涉及 > 运算符,但我目前提出的问题并未涉及重载。
【问题讨论】:
-
C++ 允许重载运算符。
-
因为 c++ 允许运算符重载。基本上,您可以随意更改操作员的意思/行为。
-
投票重新开放的理由是,虽然链接的问题有一个与按位运算符相关的答案,但问题本身涉及运算符重载的规则和习语。
-
虽然链接的问题可能隐含地解决了 > 运算符,但我目前提出的问题并未解决重载问题。
-
伙计们,我不满意这个问题是重复的。链接的副本似乎处理运算符重载的规则和习语 - 换句话说,如何重载运算符。我的问题是为什么 C++ 让你使用位移运算符将输出插入到流中并从流中提取输出。
标签: c++