ostream& operator<< (ostream& (*pf)(ostream&));

ostream& operator<< (ostream& (*pf)(ostream&));

本文关键字:ostream lt operator pf      更新时间:2023-10-16

我的问题是理解(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这样的机械手