代码之家  ›  专栏  ›  技术社区  ›  Ross

C++中的操作符是什么?

  •  5
  • Ross  · 技术社区  · 16 年前

    在下面的例子中,什么是 <<

    std::cout << "Mouse down @ " << event.getPos() << std::endl;
    

    我理解代码将在这里做什么:使用标准输出,发送此文本,发送行尾。只是我从来没有接触过这个<&书信电报;除了原始二进制。

    谢谢 罗斯

    6 回复  |  直到 16 年前
        1
  •  11
  •   Carl Smotricz    16 年前

    答案是:这个 << 默认情况下,运算符对整型执行左移,但可以重载它来执行任何您希望它执行的操作!

    在C++发明者Bjarne Stroustroup的同名图书中首次展示了将管道字符串转换成流的语法。 The C++ Programming Language . 就我个人而言,我觉得重新定义一个操作符来执行IO是一个噱头;它使演示代码看起来很酷,但对代码的易懂性没有帮助。操作符重载作为一种技术在编程语言界受到了广泛的批评。


    编辑: 因为还没有人提到这一点:

    operator<< ostream 类,其中 cout 是一个实例。类定义位于 iostream library ,即 #include 'd as公司 <iostream> .

        2
  •  3
  •   Siqi Lin    16 年前

    这个 operator<< 正在超载。退房 Operator Overloading .

        3
  •  3
  •   Nick Meyer    16 年前

        4
  •  3
  •   Scharron    16 年前

    使用重载,使用ostream左操作数(std::cout是ostream类型),它被用作流运算符来打印各种类型的数据。

    int x = 10;
    std::string y = " something";
    std::cout << x << y << std::endl;
    

    这将输出“10个左右”。

    @在这种情况下不会被任何东西取代。操作员<&书信电报;把结果扔了。

    endl不仅是行的末尾,它还将结果刷新到输出设备。

        5
  •  1
  •   josh    16 年前

    尝试编写一个程序,在其中创建一个对象并调用重载的<&书信电报;操作员,

    class x {
        //declare some pvt variables
        //overload << operator
    };
    
    int main() {
        x obj;
        cout << obj;
    }
    

    通过这样做,您将了解使用以下语句背后的基本原理

    cout << string_var << int_var;
    

        6
  •  -4
  •   Carl Smotricz    16 年前

    它是一个 按位左移 “接线员。

    n<&书信电报;p

    将n的位左移p位。零位移到低位。3<&书信电报;2等于12。

    在这个问题的上下文中 库特 '这是当前输出流。