真的不会来,一起讨论嘛。来看看今天要介绍的东西,运算符重载(Operator Overloading),C++特性类,封装了变量和方法,方法还不明确去看上一篇文章文尾。而成员变量之间的运算太过麻烦,若涉及较多变量就会变得冗杂。因此,运算符重载就是为了解决这个问题,而且还增强了代码的复用性。
大多数C++内置操作符都可以重新定义和重载。意思是说,这些操作符可以由程序员自己设定一种新的运算方式。这里给出了简单的加运算符的重载,在应用中,运算符重载的主要对象是类的对象。
这张图指明了42种可重写运算符,4中不可重写符号。我认为不用记,看看就行,只要懂了就好,这些死知识,就让电路来记住吧。
了解了基础下面,我们来讲讲具体实现。
下来我们准备,重载加号运算符(+)。
运算符重载本质上是一个函数,利用函数的封装特性,隐藏了类的成员个体间的运算过程。
返回值类型 operator要重载的运算符(参数是引用类型){};
这就是运算符重载的声明了。除了运算符可以换,其他都是固定格式。返回值类型就是类名了,因为返回值是类的对应类型。
myclass a(5),b(3),c(0);
c = a + b;
a+b 就是重载后的运算符的应用,返回值要赋值给c这个对象,就只能是对应类的对象了。
运算符重载的实现,和定义区别不大,填充了函数体,去掉了分号。a被隐式入参用this指针标记,指明为前一个操作符有this指针不用传参,后一个使引用的方式传参数。但,这都不用我们来做,调用时和普通运算符无两样。
c = a + b;
在重载符函数内怎么操作两个对象的,调用时a和b的成员变量就是怎么被运算的,结果被放入一个对象然后返回,赋值给c。
这就是运算符重载从无到有再到无的过程了。
可以参考学习,理解一下,然后再找找例子,实现一下。
最后说一下上篇提到的,this指针返回,虽然能拿出来,但是不能用,编译报错,语法不通过,强制转换类的对象也不行,不让这么用,太坏了。
––共享知识,迎接未来,我是美玉东番。