什么是"operator <<"?

Sca*_*ark 20 c++ operators

我知道大多数运营商的名字,但不知道什么operator<<operator>>被称为.

operator=() // the assignment operator
operator==() // the equality of comparison operator
operator++() // the increment operator
operator--() // decrement operator etc.
operator<() // the less-than operator
Run Code Online (Sandbox Code Playgroud)

等等......

Sco*_*ord 38

<<既是插入算子又是左移算子.
>>是提取算子和右移算子.

在iostreams的上下文中,它们被认为是流插入/提取.在位移的情况下,它们是左移和右移.

  • +1你做了一个重要的区别.运算符的名称根据其使用方式而变化(更重要的是,它使用的是什么类型的数据).由于这种特殊性,我听到了"<<"和">>"符号被称为"双左"和"双右"符号,作为以无上下文方式引用符号的通用方式(类似于你可以调用`+`"plus"或`/`"斜线",无论它们如何超载),但这绝不是正式的. (2认同)

Mit*_*eat 18

<< 左移

>> 右转

  • 在语言学中,它被称为[bastardisation](http://en.wiktionary.org/wiki/bastardisation). (6认同)
  • @ScaryAardvark:它被称为重载 (5认同)
  • 啊.因此,运算符<<的使用已被混淆为流实现.即std :: cout <<"Hello Mum"<< std :: endl. (3认同)
  • @SigTerm等人:+添加整数和连接字符串,是那个混蛋吗?我不认为"以这种方式"过载会导致很多混乱或错误的代码...如果有的话,+可能会从这个角度来看更糟糕. (3认同)
  • @Scott Stafford:"连接字符串",连接的结果包含两个原始字符串,它们是"sum",因此是+.足够逻辑."我不认为"存在"我不同意,这就是结束.操作员行为应该是一致的,即使使用iostream的"shift"操作符是标准的,也不一定意味着它是好的.因为行为不同,按位移位和iostream应该有不同的运算符. (2认同)

cpx*_*cpx 18

在C++ Streams中,

  • << 是插入运算符.
  • >> 是提取算子.

在二元操作中,

  • 右移(>>)
  • 左移(<<)


Gar*_*nay 8

<< = Bitwise left shift
>> = Bitwise right shift
Run Code Online (Sandbox Code Playgroud)