運算子可依類別的需要進行多載 (overload) ,舉例如下
001 | #include <iostream> |
002 | |
003 | class Demo { |
004 | public: |
005 | Demo() { |
006 | a = 1; |
007 | b = 1; |
008 | } |
009 | |
010 | Demo(int pa, int pb) { |
011 | a = pa; |
012 | b = pb; |
013 | } |
014 | |
015 | Demo operator+(const Demo& p) { |
016 | Demo demo; |
017 | demo.a = this->a + p.a; |
018 | demo.b = this->b + p.b; |
019 | |
020 | return demo; |
021 | } |
022 | |
023 | void do_something() { |
024 | std::cout << a + b |
025 | << std::endl; |
026 | } |
027 | |
028 | private: |
029 | int a; |
030 | int b; |
031 | |
032 | }; |
033 | |
034 | int main() { |
035 | Demo d1(2, 6); |
036 | d1.do_something(); |
037 | Demo d2(10, 24); |
038 | d2.do_something(); |
039 | Demo d3; |
040 | d3 = d1 + d2; |
041 | d3.do_something(); |
042 | |
043 | return 0; |
044 | } |
045 | |
046 | /* Kaiching Chang |
047 | u0916.cpp |
048 | 2014-02 */ |
運算子多載在第 15 行, operator 後面接上要重載的運算子,另外要有 const 的參考參數,表示運算子後面的運算元 (operand)
015 | Demo operator+(const Demo& p) { |
016 | Demo demo; |
017 | demo.a = this->a + p.a; |
018 | demo.b = this->b + p.b; |
019 | |
020 | return demo; |
021 | } |
編譯執行,結果如下
$ g++ u0916.cpp |
$ ./a.out |
8 |
34 |
42 |
$ |
continue ...
沒有留言:
張貼留言