首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 復合運算與運算符重載:複數類完整示例

     編輯:關於C++

三種實現方式對比

  1. 成員函數:Complex add(Complex c),調用 a.add(b)。
  2. 友元函數:friend Complex add(Complex, Complex),調用 add(a,b),可支援 add(a, 5.0) 等混合類型。
  3. 運算符重載:Complex operator+(Complex)(成員)或 friend Complex operator+(Complex, Complex)(友元),調用 a + b,語法最自然。

關鍵代碼片段

class Complex {
    double re, im;
public:
    Complex(double r=0, double i=0): re(r), im(i) {}
    // 成員運算符重載
    Complex operator+(const Complex& c) const { return Complex(re+c.re, im+c.im); }
    Complex operator+(double d) const { return Complex(re+d, im); }
    Complex operator*(const Complex& c) const { 
        return Complex(re*c.re - im*c.im, re*c.im + im*c.re); 
    }
    // 友元支援雙向隱式轉換
    friend Complex operator+(double d, const Complex& c) { return Complex(c.re+d, c.im); }
    friend Complex operator+(const Complex& a, const Complex& b) { return Complex(a.re+b.re, a.im+b.im); }
    void print() const { 
        cout << '(' << re << (im>=0?"+":"") << im << 'i' << ')' << endl; 
    }
};

const 正確性與引用

  • 運算符盡量聲明 const,參數用 const& 避免拷貝。
  • 友元版 operator+ 允許 double + Complex,成員版只能 Complex + double。
  • 乘法同理,友元版更對稱。

測試主函數

int main() {
    Complex a(1.5, 23.43), b(12.12, -45.23);
    Complex c = a + b;        // 成員 operator+
    Complex d = 5.0 + a;      // 友元 operator+(double, Complex)
    Complex e = a * b;        // 複數乘法
    c.print(); d.print(); e.print();
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved