您没有准确地拼写出来,但我相信您的困惑在于您认为这std::cout
是一个函数,并且您想知道为什么不这样称呼它:
std::cout("Hello World");
嗯,std::cout
不是函数。该语句中的函数是operator<<
。
std::cout << "Hello World";
或者,更具体地说,函数是std::ostream::operator<<(const char*)
。
您需要了解的是,运算符只是具有替代调用语法的函数。 operator<<
被重载为 的成员函数std::ostream
,并且std::cout
是 的对象std::ostream
。所以这:
std::cout << "Hello World";
是另一种调用方式:
std::cout.operator<<("Hello World");
请注意,这operator<<
是一个二元运算符,这意味着如果它被声明为自由函数,则它需要两个参数,如果它被声明为成员函数,则需要一个参数。当您使用替代调用语法时,左边的对象是第一个参数,右边的对象是第二个参数。在它被声明为成员函数的情况下,就像在这种情况下一样,左边的对象是调用对象,右边的对象是参数。
如果它被声明为自由函数,它会是什么样子:
operator<<(std::cout, "Hello World");
但是,无论是声明为成员还是自由函数,您仍然可以使用相同的替代调用语法。