细谈C++的运算符重载
导读:本文共3623字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 什么是运算符重载? 顾名思义就是将原本的操作符以我们的方式定义出来,方便我们使用。为什么要进行运算符重载? 简单的理由就是将减少程序员的工作量,首先先看一个简单的例子:classA{public:A(intdata):data(data){};voidshow(){cout<<"data="<<data<<endl;... ...
目录
(为您整理了一些要点),点击可以直达。什么是运算符重载?
顾名思义就是将原本的操作符以我们的方式定义出来,方便我们使用。
为什么要进行运算符重载?
简单的理由就是将减少程序员的工作量,首先先看一个简单的例子:
这样的结果并不是我们想要的,我们只是想相加一下两个对象里面数据并且将结果显示出来,但是操作符“+”的左右两边的变量必须是内置变量类型。所以为了方便,我们可以为我们自定义类型的对象对操作符“+”进行运算符重载,进行如下更改:
如我们所愿,进行如上更改我们完成了直接让两个类对象进行直接相加,大大减少了程序员的工作量。下来我们细细谈一下运算符重载函数的具体内容:
运算符重载函数的定义和调用分为两种:
1、以友元函数定义
定义格式: friend return_val operatorOPT(type& name...);
调用格式:operatorOPT(obj_list);
obj1 OPT obj2;
友元不是成员,不能直接在友元函数中使用对象的成员变量,也不能使用this指针,所以在进行函数调用的时候,需要将对象的成员函数传进去。
2、以成员函数函数定义
定义格式:return_val operatorOPT(type& name...);
注意:在使用成员函数进行调用的时候,如果使用对象的成员变量,不用将成员变量再传入函数中,直接在成员函数中使用就可以。
调用格式:obj1.operatorOPT(obj2);
obj1 OPT obj2;
下面举例来进行说明:
在进行运算符重载的时候我们需要注意两个问题:
1、在运算符的操作数,必须至少含有一个自定义类型的变量。
2、尽量使用成员函数对运算符进行重载,但是有的运算符只能使用友元函数进行重载。
比如对于"<<" 和“>>”的重载,如下:
以上的操作符全是对于双目运算符的重载,下面简单介绍几个单目运算符的例子,如"++"和"--"
因为++有前置++和后置++两种,--也是如此,对于前置++我们直接将++后的结果直接返回即可,对于后置++,为了方便区别于前置++,通常认为++后面仍然含有一个int类型的数组。进行如下操作:
当然还有以下操作符不能进行重载:
1、三目运算符不能进行重载;
2、"."成员运算符不能重载;
3、成员指针运算符不能进行重载;
4、"::"这是对于类的运算符,不能进行重载。
================= 以上就是对于运算符重载的介绍 =======================
细谈C++的运算符重载的详细内容,希望对您有所帮助,信息来源于网络。