C++ 速查手冊

9.16 - 多載運算子

運算子可依類別的需要進行多載 (overload) ,舉例如下

#include <iostream>
  
class Demo {
public:
    Demo() {
        a = 1;
        b = 1;
    }
    
    Demo(int pa, int pb) {
        a = pa;
        b = pb;
    }
    
    Demo operator+(const Demo& p) {
        Demo demo;
        demo.a = this->a + p.a;
        demo.b = this->b + p.b;
        
        return demo;
    }
    
    void do_something() {
        std::cout << a + b << std::endl;
    }
    
private:
    int a;
    int b;
};

int main() {
    Demo d1(2, 6);
    d1.do_something();
    Demo d2(10, 24);
    d2.do_something();
    Demo d3;
    d3 = d1 + d2;
    d3.do_something();
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   https://kaiching.org/
   檔名:u0916.cpp
   功能:示範 C++ 的類別
   作者:張凱慶*/

運算子多載在第 15 行, operator 後面接上要多載的運算子,另外要有 const參考參數,表示運算子後面的運算元 (operand)

Demo operator+(const Demo& p) {
    Demo demo;
    demo.a = this->a + p.a;
    demo.b = this->b + p.b;
        
    return demo;
}

編譯執行,結果如下

$ g++ u0916.cpp
$ ./a.out
8
34
42
$

上一頁 9.15 - 解構函數
回 C++ 速查手冊首頁
下一頁 9.17 - 繼承