C++重载操作符的函数定义 详细解读

本文解释了在C++中重载ostream操作符时为何采用特定的函数定义形式。包括返回引用的原因、为何第一个参数使用引用而非拷贝,以及为何第二个参数采用const引用。文章深入探讨了这些选择背后的原理和技术考量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重载操作符的函数定义为什么一定是如下的形式呢?

ostream & operator << (ostream & output, const ClassType & object)
{
    output << ...
    ...
    return output;
}

这里有三个问题:
1)函数返回类型为什么是引用?
2)第一个参数为什么用引用?
3)第二个参数为什么又是const引用?

1.返回引用是为了使得返回结果为左值,相当于一个独立对象的作用,这样可以做连续的输出操作。

2.第一个参数之所以为引用:
a.首先式避免了IO对象的复制,注意,这里不是刻意避免IO对象的复制,而是IO对象不可复制或者赋值,所以这里必须是引用类型。
b.如果要传递或返回IO对象,则必须传递指向流对象的指针或者引用。
c.此外你可能会想,为什么第二个形参用const而这边不需要呢?
因为写入流会改变流的状态!

3.
a.对于要输出的类型,避免了对象的赋值
b.一般输出一个对象是不可以改变这个对象的,
c.const引用可以 使得传递参数更为灵活,

这里的每个细节都是必须的,不能更改!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值