#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
class Complex{
public:
Complex(int a,int b){
this->m_a=a;
this->m_b=b;
}
void ComplexAdd(Complex &c){
this->m_a+=c.m_a;
this->m_b+=c.m_b;
}
void printC(){
cout<<"m_a: "<<m_a<<" m_b: "<<m_b<<endl;
}
//写在局部
Complex operator+(Complex &c){
Complex temp(this->m_a+c.m_a,this->m_b+c.m_b);
return temp;
}
//friend Complex operator+(Complex &c1,Complex &c2);
//friend Complex& operator+=(Complex &c1,Complex &c2);
//friend Complex& operator++(Complex &c);
//friend const Complex operator++(Complex &c,int);
Complex& operator+=(Complex &c){
this->m_a+=c.m_a;
this->m_b+=c.m_b;
return *this;
}
Complex& operator++(){
this->m_a++;
this->m_b++;
return *this;
}
const Complex operator++(int){//亚元
Complex temp(this->m_a,this->m_b);
this->m_a++;
this->m_b++;
return temp;
}
private:
int m_a;
int m_b;
};
//全局+
/*Complex operator+(Complex &c1,Complex &c2){
Complex temp(c1.m_a+c2.m_a,c1.m_b+c2.m_b);
return temp;
}*/
//全局+=
/*Complex& operator+=(Complex &c1,Complex &c2){
c1.m_a+=c2.m_a;
c1.m_b+=c2.m_b;
return c1;
}*/
//全局++ ++a
/*Complex& operator++(Complex &c){
c.m_a++;
c.m_b++;
return c;
}*/
//使用占位符实现a++
#if 0
const Complex operator++(Complex &c,int){
Complex temp(c.m_a,c.m_b);
c.m_a++;
c.m_b++;
return temp;
}
#endif
int main(){
Complex c1(1,2);
Complex c2(10,20);
c1+=c2+=c2;
c1.printC();
++++c1;
c1.printC();
c1++;
c1.printC();
system("pause");
return 0;
}
单目及双目操作符
最新推荐文章于 2024-08-15 10:15:51 发布