c 運算子過載 例項

2021-12-29 23:38:17 字數 4799 閱讀 1741

【專案2拓展2(思考)】這個思考題吊一下大家的胃口:設定義了兩個分數類的物件,如cfraction c1, c2。如果定義了int i,我們能用cin>>i>>j;在鍵盤上輸入i和j的值,是否期望用cin>>c1>>c2;輸入分數呢?同理,用cout<

首先要說明:有的c++編譯系統(如vc++6.0)沒有完全實現c++標準,它所提供的字尾.h的標頭檔案不支援把成員函式過載為友元函式,因此在vc++6.0,應把程式的頭兩行:

#include

using namespace std;

改為一行:#include    //c語言的風格

這是我自己編寫的有關運算子過載的程式:

[cpp]

#include   

enum style_enum; 

class cfraction 

//建構函式,初始化用  

void simplify();                //化簡(使分子分母沒有公因子)  

//輸入輸出過載  

friend ostream& operator<

friend istream& operator>>(istream &in,cfraction &cf); 

//加減乘除,結果需要化簡  

friend cfraction operator+(const cfraction &lcf,const cfraction &rcf); 

friend cfraction operator-(const cfraction &lcf,const cfraction &rcf); 

friend cfraction operator*(const cfraction &lcf,const cfraction &rcf); 

friend cfraction operator/(const cfraction &lcf,const cfraction &rcf); 

//關係運算子  

friend bool operator>(const cfraction &lcf,const cfraction &rcf); 

friend bool operator

friend bool operator>=(const cfraction &lcf,const cfraction &rcf); 

friend bool operator<=(const cfraction &lcf,const cfraction &rcf); 

friend bool operator==(const cfraction &lcf,const cfraction &rcf); 

friend bool operator!=(const cfraction &lcf,const cfraction &rcf);   

//取+、-一目運算子  

cfraction operator+(); 

cfraction operator-(); 

};    

void cfraction::simplify() 

nume /= v1; 

deno /= v1; 

if(deno < 0) 

}  //輸出過載  

ostream& operator<  

//輸入過載  

istream& operator>>(istream &in,cfraction &cf) 

return in; 

} //加法過載  

cfraction operator+(const cfraction &lcf,const cfraction &rcf) 

//減法過載  

cfraction operator-(const cfraction &lcf,const cfraction &rcf) 

//乘法過載  

cfraction operator*(const cfraction &lcf,const cfraction &rcf) 

//除法過載  

cfraction operator/(const cfraction &lcf,const cfraction &rcf) 

//取正過載  

cfraction cfraction::operator+() 

//取負重載  

cfraction cfraction::operator-()   

//大於號過載  

bool operator>(const cfraction &lcf,const cfraction &rcf)   

//小於號過載  

bool operator  

//等於過載  

bool operator==(const cfraction &lcf,const cfraction &rcf)   

//不等於過載  

bool operator!=(const cfraction &lcf,const cfraction &rcf)   

//  

bool operator>=(const cfraction &lcf,const cfraction &rcf)   

//  

bool operator<=(const cfraction &lcf,const cfraction &rcf)   

int main() 

#include

enum style_enum;

class cfraction

//建構函式,初始化用

void simplify();    //化簡(使分子分母沒有公因子)

//輸入輸出過載

friend ostream& operator<

friend istream& operator>>(istream &in,cfraction &cf);

//加減乘除,結果需要化簡

friend cfraction operator+(const cfraction &lcf,const cfraction &rcf);

friend cfraction operator-(const cfraction &lcf,const cfraction &rcf);

friend cfraction operator*(const cfraction &lcf,const cfraction &rcf);

friend cfraction operator/(const cfraction &lcf,const cfraction &rcf);

//關係運算子

friend bool operator>(const cfraction &lcf,const cfraction &rcf);

friend bool operator

friend bool operator>=(const cfraction &lcf,const cfraction &rcf);

friend bool operator<=(const cfraction &lcf,const cfraction &rcf);

friend bool operator==(const cfraction &lcf,const cfraction &rcf);

friend bool operator!=(const cfraction &lcf,const cfraction &rcf);

//取+、-一目運算子

cfraction operator+();

cfraction operator-();

};void cfraction::simplify()

nume /= v1;

deno /= v1;

if(deno < 0) }

//輸出過載

ostream& operator<

//輸入過載

istream& operator>>(istream &in,cfraction &cf)

return in;

}//加法過載

cfraction operator+(const cfraction &lcf,const cfraction &rcf)

//減法過載

cfraction operator-(const cfraction &lcf,const cfraction &rcf)

//乘法過載

cfraction operator*(const cfraction &lcf,const cfraction &rcf)

//除法過載

cfraction operator/(const cfraction &lcf,const cfraction &rcf)

//取正過載

cfraction cfraction::operator+()

//取負重載

cfraction cfraction::operator-()

//大於號過載

bool operator>(const cfraction &lcf,const cfraction &rcf)

//小於號過載

bool operator

//等於過載

bool operator==(const cfraction &lcf,const cfraction &rcf)

//不等於過載

bool operator!=(const cfraction &lcf,const cfraction &rcf)

//bool operator>=(const cfraction &lcf,const cfraction &rcf)

//bool operator<=(const cfraction &lcf,const cfraction &rcf)

int main()

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 例項 運算子過載

文章 c 例項 運算子過載 一 兩個複數的加法運算 二 複數的加減乘除運算 三 複數與標準型資料之間的運算,順序任意 四 兩個矩陣間的運算與輸出 行列任意 五 複數與double型資料的運算 六 不同類物件的轉換 一 定義一複數類complex,過載運算子 用於複數的加法運算,將運算子過載函式定義為...

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

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