gpt4 book ai didi

C++ iostream 运算符覆盖函数返回类型

转载 作者:行者123 更新时间:2023-11-28 06:20:52 28 4
gpt4 key购买 nike

我仍处于 C++ 基本格式和命令的学习阶段。我现在在类运算符函数重载并来到 <<>> .我的问题是:当它们在如下友元函数中定义时:

ostream &operator << ( ostream &output, const PhoneNumber &number )

并使用 PhoneNumber 类调用 phone像这样:

cout << phone << endl;

为什么友元函数返回ostream& ?我的意思是当一个函数返回一个特定类型的值时,它通常由一个基本类型变量接收,例如 bool、int、char、string 等。但是,对于 ostreamistream , ostream& 的返回类型没有被保存。那么,在这种情况下,它不应该是void(执行任务并终止而不返回任何值)吗?

最佳答案

因为否则您将能够将调用链接到 operator<< .这:

cout << phone << endl;

解析为:

(cout << phone) << endl;

并解析为:

operator<<(cout, phone).operator<<(endl);

所以它首先调用operator<<(cout, phone) ,返回 cout , 然后允许第二个 <<调用cout.operator<<(endl) .

如果operator<<返回例如void , 第二个<<会试着调用operator<<(void, endl)这不会编译。

关于C++ iostream 运算符覆盖函数返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338273/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com