operator運算子過載的疑問?

2021-08-20 16:11:58 字數 1686 閱讀 8985

第一種過載方式:

complex operator + (complex & c2)

complex c;

return c;               //此處返回區域性變數c;

第二種過載方式:

complex & operetor + (complex)

this->i=this->i+c2.i;

this->j=this->i+c2.j;

return *this;               //此處返回this

例項:#include

using namespace std;

class complex

complex(double i,double j)

void show()

/*complex & operator + (const complex &c2)

*/complex operator + (complex &c2)

};void f1()

int main()

farsight@ubuntu:~/shell$ 

farsight@ubuntu:~/shell$ ./a.out

this->i=3.3

this->j=7.7

farsight@ubuntu:~/shell$

例項2:

#include

using namespace std;

class complex

complex(double i,double j)

void show()

complex & operator + (const complex &c2)

/*complex operator + (complex &c2)

*/};void f1()

int main()

farsight@ubuntu:~/shell$ vi complex.cpp

farsight@ubuntu:~/shell$ vi complex.cpp

farsight@ubuntu:~/shell$ ./a.out

this->i=3.3

this->j=7.7

farsight@ubuntu:~/shell$  

還有乙個疑問:

complex & operator+(complex &c2)  這種過載方式可以加拷貝建構函式,但是列印結果又錯。

#include

using namespace std;

class complex

complex(complex &zhang)

complex(double i,double j)

void show()

complex & operator + (const complex &c2)

/*complex operator + (complex &c2)

*/};void f1()

int main()

farsight@ubuntu:~/shell$ 

farsight@ubuntu:~/shell$ ./a.out

copy

this->i=-0.0982316      //結果有錯,不知道為什麼?

this->j=-3.46551e-42

farsight@ubuntu:~/shell$ 

operator運算子過載

運算子過載 一 作為類成員函式的過載 為了能進行類物件和乙個整型值的加法運算,需要寫乙個類的成員函式來過載雙目加法 運算子。該函式在類中的宣告如下 date operator int const 函式的宣告指出,返回值是乙個date類物件,函式名是運算子 只有乙個整型引數,而且函式是常量型的。當編譯...

運算子的過載 operator

一 運算子的過載 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 在複雜資料型別中,編譯器不能識別運算子,如c 中,物件 物件,編譯器無法知道怎麼運算,所以就需要編寫函式,實現相應功能。不能過載的 運算子五個 szieof 二 自增運算子過載的實現 a a 1.類...

C 運算子過載 operator

您可以重定義或過載大部分 c 內建的運算子。這樣,您就能使用自定義型別的運算子。過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。box operator const box 宣告加法運算子用...