c++操作符重载

#include "stdafx.h"
class A{
public:
int test;
A(int j=0){
test=j;
}
//操作符重载基本格式 返回值+ 关键字+opereator+重载符号+(){}
//实质上这是完全类似于函数的 只不过函数名改为了opreator
//本质上还是成员函数 还是要守候成员函数的规矩
int operator <<(int j){
return j;
}
A operator +(A j){
A c;
c.test=this->test+j.test;
return c;
}
//最少两个参数的 并且还要有一个类的对象参数 或者enum类型的
friend int operator<(A a,int j);
};
int operator<(int j,A a){
return a.test+j;
}

//重载一般都是友元和成员函数两种方式
int _tmain(int argc, _TCHAR* argv[])
{
//重载函数的调用方式 当然这是一种比较笨拙的调用方式
A a(3),b(3);
int j=a.operator<<(1);
printf("成员函数的值为:%d ",j);

//下面我们再来看一列重载
A c=a.operator+(b);
printf("in therory c.test is 6 : c.test is %d ",c.test);

//看看友元函数的调用 友元函数的调用只能采取 参数1 + 操作符 +参数2 方式进行调用 顺序不能错 三目的就按三目的顺序来
int p=1<(a);
printf("in theroy p is 4: p is %d ",p);

//对于比较简约的调用方式 核心思想就是去掉.opereator() 换言之就是 对象+操作符+参数的模式
A m=a+b;


while(1);
return 0;
}
/*

终结一下 (1)操作符重载一般只有两种形式,成员重载,友元函数重载
(2) 操作符重载函数的调用方式对成员函数来说有两种 1:通过成员函数来调用 2,:通过简约式来调用
对于友元函数就是 更具参数 + 运算符 +参数的模式调用

*/

原文地址:https://www.cnblogs.com/enjoyall/p/5460223.html