概述
一、语法
运算符相当于一个函数,重载运算符类似于重载一个函数,函数具有返回值和参数列表,同理运算符也有,所以重载一个运算符应为
返回类型 operator@(参数表)
其中
返回类型可以为任意的类型, 一般返回该类
operator是表明重载的是一个运算符
@表示可以被重载的运算符,包括
+ - / * % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= >>>>= <<= == != <= >= new new[] delete delete[]
参数列表为参与运算的类
二、重载方式
1、非静态成员运算符重载
class A{
public :
A operator+(A b){}
private :
};
用这种方式重载所需要的参数比运算符实际所需要的参数少一个,该参数为其本身,通过this指针来传递
2、友元或普通函数方式重载运算符
class A{
friend A operator+(A a,A b); //友元声明
};
A operator+(A a,A b){……} //友元定义
A operator-(A a,A b){……} //普通函数
如果将运算符函数作为类的友元重载,它需要的参数个数就与运算符实际需要的参数个数相同。
三、注意事项
1、重载++,–等有前缀或后缀运算符
①重载前自增自减是,直接运算,返回运算后的结果。重载后自增自减时,先新建一个对象,对原对象进行备份,再对元对象进行自加运算,返回值为新建对象
②区分方法
//前缀
operator ++ ();//类内重载
operator ++ (X & x);//类外重载
//后缀
operator ++ (int);//类内重载
operator ++ (X & x, int);//类外重载
//--与之类似
2、重载=运算符
当类内存在指针时,不能令两个指针直接相等,要重新申请一个和他大小相等的内存,然后内存中的内容拷贝到新内存中。否则将会产生指针悬挂问题
3、重载[]运算符
①[]运算符是一个二元运算符,第一个参数为this,第二个是下标。
②[ ]只能被重载为类的非静态成员函数,不能被重载为友元和普通函数。
四、重载流插入>>与流提取<<运算符
1、这两个运算符只能以友员的形式重载
语法
friend inline ostream &operator << (ostream&, A&);//输出流
friend inline istream &operator >> (istream&, A&);//输入流
最后
以上就是陶醉楼房为你收集整理的C++_运算符重载的全部内容,希望文章能够帮你解决C++_运算符重载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复