C 學習記錄與心得(二) 運算子過載

2021-10-07 14:06:02 字數 3087 閱讀 4169

學習任務中,有幾道程式題,自己寫的拿出來記錄一下。

1.)宣告乙個複數類 complex,過載運算子「+」,「-」,「*」,「/」,使之能用於複數的加、減、乘、

除,運算子過載函式作為 complex 類的成員函式。程式設計序,分別求兩個複數之和、差、積和商。

思考:你編的程式能否用於乙個整數與乙個複數的算術運算?如 4+(5-2i)。

#include#includeusing namespace std;

class complex ; //預設建構函式,無形參

complex(double r, double i)

friend complex operator +(complex& x1, complex& x2);

friend complex operator - (complex& x1, complex& x2);

friend complex operator * (complex& x1, complex& x2);

friend complex operator / (complex& x1, complex& x2);

void dispplay();

private:

double real; //實部

double imag;//虛部

};complex operator +(complex& x1, complex& x2)

complex operator -(complex &x1, complex &x2)

complex operator *(complex &x1, complex &x2)

complex operator /(complex& x1, complex& x2)

void complex::dispplay()

else

cout << real << "+" << imag << "i" << endl;

}void main()

運算結果如下

2.)宣告乙個複數類 complex,過載運算子「+」,使之能用於複數的加法運算。參加運算的兩個運算量

可以都是類物件,也可以其中有乙個是整數,順序任意。例如: c1+c2, i+ c1, c1+i 均合法(設 i 為整數,

c1, c2 為複數)。執行程式,分別求兩個複數之和、整數和複數之和。

#include#includeusing namespace std;

class complex ; //預設建構函式,無形參

complex(double r, double i)

complex(double i) //轉換建構函式

friend complex operator +(complex x1, complex x2);

void display();

private:

double real; //實部

double imag;//虛部

};complex operator +(complex x1, complex x2)

void complex::display()

else

cout << real << "+" << imag << "i" << endl;

}void main()

執行結果為

3.)有兩個矩陣 a 和 b,均為 2 行和 3 列。求兩個矩陣之和。過載運算子「+」,使之能用於矩陣相加。

如: c=a+b。

#include#includeusing namespace std;

class zhen23 ;

void input();

friend zhen23 operator + (zhen23 x1, zhen23 x2); //過載+

void display();

private:

int x[2][3];

};void zhen23::input() }}

zhen23 operator +(zhen23 x1, zhen23 x2)

} return c;

}void zhen23::display() }}

void main()

執行結果為

4.)宣告乙個 teacher(教師)類和乙個 student(學生)類,二者有一部分資料成員是相同的,例如 num

(號碼), name(姓名), ***(性別)。編寫程式,將乙個 student 物件(學生)轉換為 teacher(教師)

類,只將以上 3 個相同的資料成員移植過去。可以設想為:乙個學生大學畢業了,留校擔任教師,他原有

的部分資料對現在的教師身份來講仍然有用,應當保留並成為其教師資料的一部分。

#include#includeusing namespace std;

class student ;

student(string a, int h, string n ,string s)

void display();

string duanwei;

int num;

string name;

string ***;

};class teacher

void display2();

private:

int num;

string name;

string ***;

};void student::display()

void teacher::display2()

void main()

執行結果為

運算子過載(C 學習記錄)

運算子過載概念 對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 4.5.1 加號運算子過載 作用 實現兩個自定義資料型別相加的運算 class person person int a,int b 成員函式實現 號運算子過載 person operator const person...

C 運算子過載 二

友元函式實現複數加法 運算子過載實現思路 成員函式和友元函式,兩種區別在於 1.成員函式具有this指標,友元函式沒有 2.傳遞引數不同,實現 不同,應用場合也不同 兩者相同點是 運算子的使用方法一樣 include using namespace std class complex complex...

C 學習 運算子過載

同函式過載一樣,算數操作符過載能夠帶給我們操作不同資料型別的方法,包括你自己定義的類。我們日常最常用的就是加 減 乘 除,而它們的性質又有些相似。所以,它們的運算子實現方式也有些相似。共有三種實現方式 首先,我們介紹怎樣使用友鄰函式定義操作符過載。看下面的 include class cents 使...