ostream& 运算符<< (ostream& (*pf)(ostream&));
ostream& operator<< (ostream& (*pf)(ostream&));
我的问题是理解 (ostream& (*pf)(ostream&))
- 为什么引用指针pf?根据我的理解,分配是必要的
- 为什么是第二个 (ostream&)?
我在阅读运算符重载时发现的。
谢谢
乌韦
pf
是一个函数指针(其单个参数和 return 值都是对 ostream
的引用),而不是对任何内容的引用。
这用于实现 操纵器 ,例如 endl
。
why reference to pointer pf? In my understanding necesseary for allocation
这是错误的理解。 pf
是指向函数的指针。它的 return 类型是 std::ostream&
并且唯一的参数也是 std::ostream&
.
why the second (ostream&)?
该函数使用 ostream
对象调用,该对象通过引用传递。函数 return 是对同一对象的引用。
让我们来看看调用。
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);
}
我的问题是理解 (ostream& (*pf)(ostream&))
- 为什么引用指针pf?根据我的理解,分配是必要的
- 为什么是第二个 (ostream&)?
我在阅读运算符重载时发现的。
谢谢 乌韦
pf
是一个函数指针(其单个参数和 return 值都是对 ostream
的引用),而不是对任何内容的引用。
这用于实现 操纵器 ,例如 endl
。
why reference to pointer pf? In my understanding necesseary for allocation
这是错误的理解。 pf
是指向函数的指针。它的 return 类型是 std::ostream&
并且唯一的参数也是 std::ostream&
.
why the second (ostream&)?
该函数使用 ostream
对象调用,该对象通过引用传递。函数 return 是对同一对象的引用。
让我们来看看调用。
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);
}