文章**:
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 ...