我的问题是要了解(ostream& (*pf)(ostream&))
我在阅读有关运算符重载时发现了它。
谢谢 乌韦
答案 0 :(得分:3)
为什么引用指针pf?据我了解,分配是必需的
那是一个错误的理解。 pf
是指向函数的指针。其返回类型为std::ostream&
,唯一的参数也是std::ostream&
。
为什么第二个(ostream&)?
使用ostream
对象调用该函数,该对象通过引用传递。该函数返回对同一对象的引用。
让我们看一下电话。
std::cout << std::endl;
它被翻译为:
std::cout.operator<<(std::endl);
std::ostream::operator<<(std::ostream& (*pf)(std::ostream&)
可以简单地实现为:
std::ostream& std::ostream::operator<<(std::ostream& (*pf)(std::ostream& str)
{
return pf(str);
}
答案 1 :(得分:1)
pf
是一个函数指针(其单个参数和返回值均是对ostream
的引用),而不是任何内容的引用。
这用于实现像endl
这样的操纵器。