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;
}
/* 《程式語言教學誌》的範例程式
http://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 |
$ |
相關教學影片