#include <iostream>
//运算符重载
using namespace std;
class A{
public : //如果是私有的下面必须用友元函数,因为调用了内部私有成员。
//friend A operator+(A &a1,A &a2)
int a;
public :
A(){
}
A(int a){
this->a=a;
}
int getA(){
return a;
}
//成员函数完成运算符重载
A operator-(A &a60){
A temp(this->a-a60.a);//隐藏了指针,用this指针
return temp;
}
//成员函数完成一元运算符
A& operator++() {//前置++
this->a++;
return *this;//先看操作符,再看返回的是什么,返回的&地址,所以用*this
}
};
A operator+(A &a1,A &a2){全局函数 完成 +操作符 重载
//Complex operator+(Complex &c1, Complex &c2)
A a3(a1.a+a2.a);
return a3;
}
A operator++(A &a,int) {//后置++ ,因为前置与后置重复了,用int占位符区别。
a.a++;
return a;//先看操作符,再看返回的是什么,返回的&地址,所以用*this
}
//重载<<如果是私有属性则用友元函数。
ostream& operator<<(ostream &out,A &a0){
out<<"生活真是苦"<<endl;
out<<a0.a<<endl;
return out;
}
int main(){
A a4(20);
A a5(30);
A a6;
A a7;
a6=a4+a5;
cout<<a6.getA()<<endl;//50
a7=a6-a4;
cout<<a7.getA()<<endl;//30
++a7;
cout<<a7.getA()<<endl;//31
a7++;
cout<<a7.getA()<<endl;//32
cout<<a7<<endl;
}
#include <iostream>
using namespace std;
class A{
public :
int a;
public :
//()的运算符重载
int operator() (int a,int b){
return a*a+b*b;
}
A(){
}
} ;
int main(){
A a;
cout<<a(2,3)<<endl;
}