繁体   English   中英

ostream&运算符<<(ostream&(* pf)(ostream&));

[英]ostream& operator<< (ostream& (*pf)(ostream&));

我的问题是要了解(ostream& (*pf)(ostream&))

  1. 为什么要引用指针pf? 据我了解,分配是必要的
  2. 为什么第二个(ostream&)?

我在阅读有关运算符重载时找到它。

谢谢你

为什么要引用指针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);
} 

pf是一个函数指针(其单个参数和返回值均是对ostream的引用),而不是对任何内容的引用。

这用于实现像endl这样的操纵器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM