C++重载技术之运算符重载

C++运算符重载技术详解
本文深入探讨了C++中的运算符重载技术,包括重载的应用范围、优先级与结合性、重载方式(成员函数与友元),以及如何在Animal类中实现输出函数的友元重载与加法运算符的重载。

        C++中的重载技术不仅应用于函数,还可以应用于运算符,运算符重载意味着赋予已有的运算符多种含义,但是同一运算符的含义必须相符,即加法运算符不能重载用于减法运算,等等。

        几乎所有的运算符都可以实现重载,包含算术运算符,位操作运算符,逻辑运算符,比较运算符,赋值运算符等。要记住这些运算符不太容易,我们可以记住不能重载的运算符有“.”,“.*”,“::”和“?:”。

        运算符重载并不会改变原运算符的优先级和结合性。

        在对运算符重载的方式上,可以利用成员函数重载,也可以使用友元方式重载。

假定我们定义了一个Animal类,并要输出对象的信息,我们可以以友元的方式在类中定义一个输出函数,定义如下:

friend ostream & operator <<(ostream & os, Animal & a);

上述语句通过友元方式重载流运算符,函数中第一个参数是输出流的一个引用,第二个参数是要输出对象的引用,函数返回输出流的引用,正因为输出的是输出流的引用,从而可以实现cout<<a<<b<<c<<endl;的连续输出效果。

如果将函数改为:

friend out operator <<(ostream & os, Animal & a);

则无法实现几个对象的连续输出。

不但流运算符可以重载,其他运算符也可以进行重载,取最简单的“+”加法运算符为例。加法运算符可以实现很多内置数据类型的加法运算,如果我们定义了一个类,比如说Animal类,需要实现对类的对象进行相加,那么我们就需要在类内部实现“+”运算符的重载,实现类内部数据成员的相加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值