C++ 为什么我们在 std::cout 处使用 << 而不是大括号?

C++ Why do we use << instead of braces at std::cout?

我开始使用 C++,我想知道为什么我不使用 at cout 大括号来给它一个参数。为什么我们使用 << ? cout不也是函数吗,要不要用大括号?

<< 是一个 operator overload,这意味着它只是等效代码的语法糖:

operator<<(cout, "Hello World");

或者,当 operator<< 是成员函数时(std::cout 恰好是这种情况):

cout.operator<<("Hello World");

cppreference对std::cout的定义是:

The global objects std::cout and std::wcout control output to a stream buffer of implementation-defined type (derived from std::streambuf), associated with the standard C output stream stdout.

在您的例子中,运算符 << 用作 operator overload。 这意味着当我们写一个像 std::cout << "hi"; 这样的表达式时,它将执行看起来像这样的重载函数:

operator<<(std::cout, std::string);

此重载函数将在 << 运算符左侧看到 cout 的对象并且在右侧看到 std::string

的对象时执行

还要注意cout不是一个函数,它是一个对象。