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

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

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引用可以 使得传递参数更为灵活,

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

猜你喜欢

转载自blog.csdn.net/c243311364/article/details/81412698
今日推荐