ostream& operator<< (ostream& (*pf)(ostream&));
ostream& operator<< (ostream& (*pf)(ostream&));
我的问题是理解(ostream& (*pf)(ostream&))
- 为什么要引用指针 PF?在我的理解中,分配的必要性
- 为什么是第二个(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
这样的机械手。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- ostream过载时的缓冲区冲洗
- 需要从 istream 和 ostream 派生 iostream
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- "ostream &os"有什么用?
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- C++表达SFINAE和ostream操纵器
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- C++运算符<<调用::ostream而不是std::osttream
- BOOST ::变体无法解决运算符&lt;&lt;对于STD :: Ostream
- C++ostream:没有运算符匹配<<&应在'&'代币
- 重载运算符<<用于ostream语法
- 重载ostream&时转换错误无效;operator< & lt;
- 运算符<<(ostream&os,..)用于模板类
- std::ostream&operator< & lt; (std:: ostream&压力,压力& &;val)
- 上Ostream & lt; & lt;重载的困惑