C 例項 運算子過載

2021-06-13 10:05:18 字數 4072 閱讀 3086

文章**:

c++例項——運算子過載

一、兩個複數的加法運算

二、複數的加減乘除運算

三、複數與標準型資料之間的運算,順序任意

四、兩個矩陣間的運算與輸出(行列任意)

五、複數與double型資料的運算

六、不同類物件的轉換

一、定義一複數類complex,過載運算子+,用於複數的加法運算,將運算子過載函式定義為非成員、非友元

函式,程式設計求兩複數之和。

#include

using namespace std;

class complex

void display()

};complex operator+(complex& c1,complex& c2)

int main()

輸出:c1=(12,9)

c2=(2,10)

c3=(14,19)

press any key to continue...

二、定義乙個複數類complex,過載運算子+-*/,用於複數的加減乘除運算,將運算子函式過載為complex類

的成員函式,求兩個複數的和、差、積、商。

#include

using namespace std;

class complex

complex operator+(complex&);

complex operator-(complex&);

complex operator*(complex&);

complex operator/(complex&);

void display()

private:

int real,imag;

};complex complex::operator+(complex& c2)

complex complex::operator-(complex& c2)

complex complex::operator*(complex& c2)

complex complex::operator/(complex& c2)

int main()

輸出:c1=(12,9)

c2=(2,3)

c1+c2=(14,12)

c1-c2=(10,6)

c1*c2=(24,27)

c1/c2=(6,3)

press any key to continue...

三、定義乙個複數類,過載運算子+,用於複數的加法,參加運算的可是類物件,也可以是只有乙個整數,

順序任意,如c1+c2,c1+i,i+c1,設i為整數,程式設計求兩個複數之和,整數和複數之和。

#include

using namespace std;

class complex

complex(int r,int i):real(r),imag(i){}

complex(int r)

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

friend ostream& operator<<(ostream&,complex&);

private:

int real,imag;

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

ostream& operator<<(ostream& output,complex& c)

int main()

輸出:c1=(12,9)

c2=(2,3)

c1+c2=(14,12)

c2+c1=(14,12)

c1+8=(20,9)

8+c1=(20,9)

press any key to continue...

四、設有兩個2*3矩陣a,b,過載運算子+,用於兩個矩陣的加法運算,如c=a+b,設c也為2*3的矩陣。過載<<

和》,用於輸入輸出矩陣。

#include

using namespace std;

class matrix

;matrix::matrix(int r,int c)

istream& operator>>(istream& input,matrix& c)

matrix operator+(const matrix& a,const matrix& b)

ostream& operator<<(ostream& output,matrix& c)

int main()

輸出:a:matrix(2*3)1 2 3 4 5 6

b:matrix(2*3)4 5 6 7 8 9

1       2       3       4       5       6

4       5       6       7       8       9

5       7       9       11      13      15

press any key to continue...

五、定義一複數類complex,程式設計計算complex類物件與一double型資料d1的和,將結果放在d1中並輸出,再

以複數形式輸出。

#include

class complex

//預設建構函式

complex(int r,int i):real(r),imag(i){}   //過載建構函式

operator double()  //型別轉換函式,用於將物件轉換為double型資料。

friend complex operator+(const complex&,const complex&); +運算子過載

friend ostream& operator<<(ostream&,complex&);  《運算子過載,用於輸出物件

private:

int real,imag;

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

ostream& operator<<(ostream& output,complex& c)

int main()

六、定義兩個類,techer類和student類,將student類物件轉換為techer類物件,假設學生畢業後留校,其相關

資料仍然有用,如編號num,姓名name,性別***。轉換後輸出相關資料。

#include

#include

using namespace std;

class techer;//類的提前引用宣告

class student

//預設建構函式

student(int n,string nam,char s,float sco):num(n),name(nam),***(s),score(sco){}

friend ostream& operator<<(ostream&,student&);//過載<<,以輸出student類

private:

int num;

string name;

char ***;

float score;

};ostream& operator<<(ostream& output,student& t)

class techer

techer(int n,string nam,char s):num(n),name(nam),***(s){}

techer(student& s)  //轉換建構函式,將學生類轉換為教師類

friend ostream& operator<<(ostream&,techer&);

private:

int num;

string name;

char ***;

};ostream& operator<<(ostream& output,techer& t)

int main()

輸出:techer : 1008 zhangning f

student: 1008 zhangning f 98

press any key to continue...

C 運算子過載例項

以下示例中定義了乙個class test,過載了 等符號 include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool oper...

c 運算子過載 例項

專案2拓展2 思考 這個思考題吊一下大家的胃口 設定義了兩個分數類的物件,如cfraction c1,c2。如果定義了int i,我們能用cin i j 在鍵盤上輸入i和j的值,是否期望用cin c1 c2 輸入分數呢?同理,用cout 首先要說明 有的c 編譯系統 如vc 6.0 沒有完全實現c ...

C 程式設計例項 運算子過載

實驗15 運算子過載 實驗目的 通過本實驗,掌握運算子過載的概念。實驗要求 熟練掌握運算子過載的使用技術。實驗內容 實現下面兩個程式,注意 的過載用法。1 定義運算子過載函式為友元函式。include include class a a int i,int j x i y j a operator ...