C++ 运算符重载,看完不懂我跟你姓

        真的不会来,一起讨论嘛。来看看今天要介绍的东西,运算符重载(Operator Overloading),C++特性类,封装了变量和方法,方法还不明确去看上一篇文章文尾。而成员变量之间的运算太过麻烦,若涉及较多变量就会变得冗杂。因此,运算符重载就是为了解决这个问题,而且还增强了代码的复用性。

运算符重载解释

        大多数C++内置操作符都可以重新定义和重载。意思是说,这些操作符可以由程序员自己设定一种新的运算方式。这里给出了简单的加运算符的重载,在应用中,运算符重载的主要对象是类的对象。

我从w3school截图的

        这张图指明了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指针返回,虽然能拿出来,但是不能用,编译报错,语法不通过,强制转换类的对象也不行,不让这么用,太坏了。

––共享知识,迎接未来,我是美玉东番。

你可能感兴趣的:(C++ 运算符重载,看完不懂我跟你姓)