實驗七,運算子過載

2021-08-20 16:21:55 字數 2587 閱讀 4856

一、實驗目的和要求

熟悉運算子過載的定義和使用方法

二、實驗內容

1.除錯下列程式

//sy7_1.cpp  

#includeusing namespace std;

class complex

complex(double r)

complex(double r,double i)

complex operator + (const complex &c);

complex operator - (const complex &c);

complex operator * (const complex &c);

complex operator / (const complex &c);

friend void print(const complex &c);

private:

double real,imag;

};

inline complex complex::operator + (const complex &c)

inline complex complex::operator - (const complex &c)

inline complex complex::operator * (const complex &c)

inline complex complex::operator / (const complex &c)

void print(const complex &c)

complex(double r)

complex(double r,double i)

friend complex operator + (const complex &c1,const complex &c2);

friend complex operator - (const complex &c1,const complex &c2);

friend complex operator * (const complex &c1,const complex &c2);

friend complex operator / (const complex &c1,const complex &c2);

friend void print(const complex &c);

private:

double real,imag;

};

complex operator + (const complex &c1,const complex &c2)

complex operator - (const complex &c1,const complex &c2)

complex operator * (const complex &c1,const complex &c2)

complex operator / (const complex &c1,const complex &c2)

void print(const complex &c)

//無參建構函式

time(int h, int m,int s) //過載建構函式

time operator +(time&); //操作符過載為成員函式,返回結果為time類

void gettime();

private:

int hours,minutes,seconds;

};

time time::operator +(time& time)

void time::gettime()

int main( )

執行結果:

三、分析與討論

結合上題中的程式總結運算子過載的形式。

答:運算子函式過載一般有兩種形式:過載為類的成員函式和過載為類的非成員函式。非成員函式通常是友元。(可以把乙個運算子作為乙個非成員、非友元函式過載;但是,這樣的運算子函式訪問類的私有和保護成員時,必須使用類的公有介面中提供的設定資料和讀取資料的函式,呼叫這些函式時會降低效能。可以內聯這些函式以提高效能。)  

當運算子過載為類的成員函式時,函式的引數個數比原來的運算元要少乙個(後置單目運算子除外),這是因為成員函式用this指標隱式地訪問了類的乙個物件,它充當了運算子函式最左邊的運算元。因此:雙目運算子過載為類的成員函式時,函式只顯式說明乙個引數,該形參是運算子的右運算元。前置單目運算子過載為類的成員函式時,不需要顯式說明引數,即函式沒有形參。後置單目運算子過載為類的成員函式時,函式要帶有乙個整型形參。

當運算子過載為類的友元函式時,由於沒有隱含的this指標,因此運算元的個數沒有變化,所有的運算元都必須通過函式的形參進行傳遞,函式的引數與運算元自左至右一一對應。

四、實驗小結

通過本次實驗,我們學習了運算子過載的定義和使用方法,當運算子函式是乙個成員函式時,最左邊的運算元(或者只有最左邊的運算元)必須是運算子類的乙個類物件(或者是對該類物件的引用)。

實驗七 運算子過載

一 實驗目的和要求 熟悉運算子過載的定義和使用方法 二 實驗內容 1.除錯下列程式 cpp view plain copy sy7 1.cpp include using namespace std class complex complex double r complex double r,do...

實驗七運算子過載

實驗目的和要求 熟悉運算子過載的定義和使用方法 實驗內容 1.除錯下列程式 輸出結果 2.除錯下列程式 寫出程式的輸出結果,並解釋 分析與討論 結合上題中的程式總結運算子過載的形式。答 運算子函式過載一般有兩種形式 過載為類的成員函式和過載為類的非成員函式。非成員函式通常是友元。可以把乙個運算子作為...

實驗七 運算子過載

實驗目的和要求 熟悉運算子過載的定義和使用方法 實驗內容 1.除錯下列程式 sy7 1.cpp include using namespace std class complex complex double r complex double r,double i complex operator ...