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不是一个函数,它是一个对象。
我开始使用 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不是一个函数,它是一个对象。