运算符重载代码
- #include <iostream>
- using namespace std;
- class Num
- {
- private:
- int num1; //实部
- int num2; //虚部
- public:
- Num(){}; //无参构造
- Num(int n1,int n2):num1(n1),num2(n2){}; //有参构造
- ~Num(){}; //析构函数
- const Num operator+(const Num &other)const //加号重载
- {
- Num a; //定义临时类对象
- a.num1 = num1 + other.num1; //实部相加
- a.num2 = num2 + other.num2; //虚部相加
- return a;
- }
- bool operator==(const Num &other)const //相等重载
- {
- //判断实部虚部是否分别相等
- if(num1 == other.num1 && num2 == other.num2)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- Num &operator+=(const Num &other) //加等重载
- {
- //实部虚部分别加等于
- num1 += other.num1;
- num2 += other.num2;
- return *this;
- }
- Num &operator++() //重载前置++
- {
- ++num1;
- ++num2;
- return *this;
- }
- Num &operator++(int) //重载后置++
- {
- num1++;
- num2++;
- return *this;
- }
- Num operator-()const //重载-
- {
- Num temp;
- temp.num1 = -num1;
- temp.num2 = -num2;
- return temp;
- }
- void init(int n1,int n2) //修改类中的值
- {
- num1 = n1;
- num2 = n2;
- }
- void show() //展示
- {
- if(num2 < 0)
- {
- cout << num1 << num2 << "j" << endl;
- }
- else
- {
- cout << num1 << "+" << num2 << "j" << endl;
-
- }
- }
- };
-
-
- int main()
- {
- Num n1; //调用无参构造
- Num n2(5,3); //调用有参构造
- n1.show(); //调用展示函数
- cout << "*********************" << endl;
- n1.init(3,2); //调用修改函数
- n1.show();
- cout << "*********************" << endl;
- n1++;
- n1.show();
- cout << "*********************" << endl;
- ++n1;
- n1.show();
- cout << "*********************" << endl;
- if(n1 == n2) // 调用重载的相等函数
- {
- cout << "true" << endl;
- }
- else
- {
- cout << "false" << endl;
- }
- cout << "*********************" << endl;
- n1 += n2; //调用加等于重载函数
- n1.show();
- n1 = -n2; //调用重载-
- cout << "*********************" << endl;
- n2.show();
- return 0;
- }