类外定义的运算符的重载

在进行运算符的重载时,必须定义一个运算符重载函数,名字为operator,后随一个要重载的运算符。如:

operator +; operator -;operator *;operator /;

C++中运算符重载的规则:

1.C++中绝大部分的运算符都可以重载,不能进行重载的运算符如下:

. 成员访问运算符

.*成员指针访问运算符

::作用域运算符

Sizeof 长度运算符

?:选择运算符

2.C++中的只能对C++的运算符进行重载,不允许用户自己定义新的运算符进行重载。

3.重载的功能应该与原有的功能类似。

4.重载不能改变运算符的操作数的对象。

5.重载不能改变运算符原有的优先级。

6.重载不能改变运算符原有的结合性。

7.运算符重载函数的参数至少应有一个是类对象(或者是类对象的引用)。即参数不能全部是C++的标准类型。

8.运算符重载函数可以是普通函数,也可以是类的成员函数,还可以是类的友元函数。

9.一般而言,用于类对象的运算符必须重载,但是赋值运算符“=”除外,不必进行运算符的重载。

应用实例:

#include <iostream>
using namespace std;
class Complex{
public:
double real;
double imag;
Complex(double r=0,double i=0)
{
real=r;
imag=i;
}
};
Complex operator+(Complex com1,Complex com2)
{
Complex temp;
temp.real=com1.real+com2.real;
temp.imag=com1.imag+com2.imag;
return temp;
}
int main()
{
Complex com1(1.1,2.2);
Complex com2(3.3,4.4);
Complex total1,total2;
total1=operator+(com1,com2);
total2=com1+com2;
cout<<"real="<<total1.real<<",imag="<<total1.imag<<endl;
cout<<"real="<<total2.real<<",imag="<<total2.imag<<endl;
return 0;
}

运算结果:


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq2250844705/article/details/66976085
个人分类: C/C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭