我想知道:如果 examplestd::endl
是一个常规函数,那么为什么它缺少调用运算符(the operator()
)?
我知道它被设计为与插入(<<
)和提取(>>
)运算符一起使用。我试着这样称呼它:
std::endl.();
但这当然没有用。
我想知道:如果 examplestd::endl
是一个常规函数,那么为什么它缺少调用运算符(the operator()
)?
我知道它被设计为与插入(<<
)和提取(>>
)运算符一起使用。我试着这样称呼它:
std::endl.();
但这当然没有用。
std::endl
只是您可以调用的普通函数(或者更确切地说,函数模板)。您只需要使用正确的参数调用它:
std::endl(std::cout); // OK, equivalent to "std::cout << std::endl;"
这是因为ostream
重载了函数指针的移位运算符,其方式等同于以下内容:
ostream & operator<<(ostream & os, ostream & (*f)(ostream &))
{
return f(os);
}
(它实际上是basic_ostream
处理任何类型的字符特征和分配器的模板。)