Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<&书信电报;及>&燃气轮机;在C++; 我不太明白这意味着什么…我只是从我非常非常基本的Python经验中学习C++。所以这可能是一个非常愚蠢的问题。我的问题是…假设你有你的经典“Hello World”节目,你有一句话: cout<<"Hello World!"<<endl;_C++ - Fatal编程技术网

<&书信电报;及>&燃气轮机;在C++; 我不太明白这意味着什么…我只是从我非常非常基本的Python经验中学习C++。所以这可能是一个非常愚蠢的问题。我的问题是…假设你有你的经典“Hello World”节目,你有一句话: cout<<"Hello World!"<<endl;

<&书信电报;及>&燃气轮机;在C++; 我不太明白这意味着什么…我只是从我非常非常基本的Python经验中学习C++。所以这可能是一个非常愚蠢的问题。我的问题是…假设你有你的经典“Hello World”节目,你有一句话: cout<<"Hello World!"<<endl;,c++,C++,我注意到它有>>而不是Python中的,您可以实现\uu lshift\uuu和\uu rshift\uu来做任何您想做的事情。在C++中,它是相同的,而经典意义是按位移位和按位移位左移,可以使它随心所欲。 这可能是C++中“明智”操作符重载最公然违反的行为之一,但这正是代码> STD::OsStase和 STD::istRAMfoo将cin放入foo),微笑并快乐。一个新来的人,这真的没有意义,但是喝C++的帮助,你会很强。相信我。应用于不同类型时,操作符可以有不同的含义,C++允许开发人员重

我注意到它有>>而不是Python中的,您可以实现
\uu lshift\uuu
\uu rshift\uu
来做任何您想做的事情。在C++中,它是相同的,而经典意义是按位移位和按位移位左移,可以使它随心所欲。

这可能是C++中“明智”操作符重载最公然违反的行为之一,但这正是<>代码> STD::OsStase和<代码> STD::istRAM<<代码>工作。对于所有的C++爱好者(包括我自己),我为这个奇怪的操作选择道歉。只要把它想象成数据流动的方向(

cout>foo
将cin放入foo),微笑并快乐。一个新来的人,这真的没有意义,但是喝C++的帮助,你会很强。相信我。

应用于不同类型时,操作符可以有不同的含义,C++允许开发人员重载操作员来完成这一操作。这是一种强大的技术,应该谨慎使用,因为如果你不小心过载,很容易使程序无法阅读

因此
>
这两个
运算符是位移位运算符,但对于输入/输出流,它们被重载(>其含义被重新定义),以便用于将内容插入/提取到流中


我认为它们之所以被使用,是因为它们看起来很直观(它们指示数据流的方向),而且因为它们几乎从未被用于其他目的。

最初,它确实意味着位移位。您仍然可以将其用作int(或其他基本类型)的位移位

类允许您重新定义运算符。这允许您通过适当修改内部成员来创建迭代器,
++
实际上为迭代器执行您想要的操作(迭代到下一个元素)

也是操作符,可以为类重新定义,这允许它们用作“流插入/提取操作符”

ostream类实际上定义了
ostream&operator>(Type&)

您可以在此处查看有关i/ostream的更多详细信息:

全部细节

您甚至可以编写自己的此类运算符,以便能够执行
cout,而不是说

print "Hello" + "world"  #I know, you wouldn't actually do it like this.
其中“print”是命令,“hello world”是文本

c++作为

cout << "Hello" << "World";  // or like this. But...

int i = 42;
cout << "The answer is: " << i;  //you may want to do this

代码是什么?你用什么信息来学习C++?那个来源就是你遇到你要问的指令的地方,对吧?它没有解释它们的意思吗?重复的可能重复的是什么“我想我算是酷爱饮酒者,但我只想指出,与
printf
相比,这里有一些合理的技术原因,而不仅仅是风格问题。编译器无法判断变量参数是NULL还是0,并且格式说明符会受到某些类型的漏洞的影响,因此无法轻松扩展到新类型。运算符重载的选择允许扩展与rhs上的类相关联,而不必扩展
iostream
。这当然是一个黑客行为,但却是一个例外的典型例子。你说这种选择对新手来说毫无意义。我不同意。我教过200多位新来者,他们中没有一个人反对。如果你想要一些对新来者来说没有意义的东西,那它就在转移比特。“Rob,也许他是指C++的新来者,他们是来自另一种语言的OrdCube,其中位移位运算符总是一个位移位运算符。不过,我不能和你争论,因为这会让完全的新手感到困惑。前几天我看到一个答案是这样的,有人认为如果lhs是十进制的,那么3个
移动了3个十进制数字。@Karl:他可能会,但这应该是精确的。这取决于你怎么看它。在C++标准库中,有数百个重载在这里,其中I/O运算符是>,因此这是可以想象的标准用法。它们也可以用于一些内置类型的奇数二进制位移位,这是个例外。:-)@博:我指的是它们天生的功能(在C中),事实上我说“它们几乎从未被用于其他目的”。另一方面,尝试在C++中开发任何人,如<代码>
print "Hello" + "world"  #I know, you wouldn't actually do it like this.
cout << "Hello" << "World";  // or like this. But...

int i = 42;
cout << "The answer is: " << i;  //you may want to do this