c++實驗**及學習筆記(五)你好! 這是乙個高程實驗課的**記錄及學習筆記。我將記錄一些重要的知識點、易錯點。但是作為大學生,水平很低,敬請指點教導、優化**。
首先我們來看一下問題
這次的問題乍一看有些雲裡霧裡,讓人不知所云。我們索性把第二問忽略,只看第一問。設計乙個有理數類,表示成分數,進行兩個有理數的加減乘除運算。
首先,我們知道,一切有理數都能表示成分數,那麼我們要設計的類,就要具有分數的特性:資料成員是分子和分母,成員函式是分數的表示、運算如化簡、四則運算等等。這個類可以創造各種各樣的分數物件。
其次這個問題中我們不可避免用到建構函式(析構主要是下一問)我們會對建構函式稍作講解。
類:class rational
成員資料:私有
成員函式:公開
參考文章:c++預設建構函式與建構函式
建構函式:c++用於構建類的新物件時需要呼叫的函式,該函式無返回型別!(注意:是「無」! 不是空!(void))。c++語言特性,系統在建立類的新物件的時候會自動呼叫建構函式。而析構函式呢,就是這個物件被銷毀的時候自動呼叫析構函式。乙個伴隨生,乙個伴隨滅。預設建構函式:未提供顯式初始值時,用來建立物件的建構函式。
那麼我們就可以用建構函式和析構函式搞事情,非常方便。比如析構函式可以用來**記憶體,建構函式可以用來初始化物件。
就算你不特意寫建構函式呢,系統也會自己悄悄寫個預設建構函式就不給你顯示出來。畢竟生來就有。
然後當你要寫建構函式的時候呢,除非自己寫個預設建構函式,必須在你的建構函式前面加上乙個預設建構函式,不然報錯。這就是傲嬌吧(`へ´*)ノ
那麼預設特殊在**呢?我們又該怎麼寫建構函式呢?
如果程式猿沒有定義任何建構函式,則編譯器會自動定義預設建構函式,其形式如 testclass() {}class testclass
;
定義預設建構函式有兩種方式,如上述**展示的,一是定義乙個無參的建構函式,二是定義所有引數都有預設值的建構函式 ;
乙個類必須有且只能有乙個預設建構函式!
析構函式無參無返回值
c++實現有理數類加減乘除
設計類:
這是基本的構架,四則運算需要注意的是,我們要返回的結果也是有理數,所以用【有理數】這個函式型別,傳入兩個要運算的有理數的位址加:分子=第乙個分子乘第二個分母+第二個分子乘第乙個分母#include
using namespace std;
class rational
void
set(
int x,
int y)
//設定分子分母
void
print()
//輸出x/y
else
}void
******()
//化簡:使用輾轉相除法化簡分數
den /
= y;
num /
= y;
if(den <0)
}...
}int
main()
分母=第乙個分母乘第二個分母
減、乘、除同理
需注意除不能讓第二個分數=0
public:
rational plus
(const rational &r1,
const rational &r2)
rational sub
(const rational &r1,
const rational &r2)
rational mult
(const rational &r1,
const rational &r2)
rational div
(const rational &r1,
const rational &r2)
else
r.******()
;return r;
}
#include
using namespace std;
int objcount =0;
class rational
~rational()
void
set(
int x,
int y)
//設定分子分母
void
print()
//輸出x/y
else
}double
todec()
//轉換成小數
void
******()
//化簡
(在構造和析構函式下我寫了輸出語句,每建立乙個新物件輸出count,每銷毀乙個輸出discount)
今天的講解到此結束,如有問題及時交流,感謝閱讀,**鞠躬!
類的建構函式與析構
1.把物件的初始化工作放在建構函式中,把清除工作放在析構函式中。當物件被建立時,建構函式被自動執行。當物件消亡時,析構函式被自動執行。這下就不用擔心忘了物件的初始化和清除工作。2.建構函式 析構函式與類同名,由於析構函式的目的與建構函式的相反,就加字首 以示區別。3.建構函式與析構函式都沒有返回值型...
類的構造與析構函式
每個類都有建構函式和析構函式。即使使用者建立的類,系統也會為該類建立預設的建構函式。建構函式不能是虛函式。在物件導向語言裡,這兩個函式特別重要。物件導向的語言裡,其成員變數和函式都屬於物件 除了靜態全域性變數和靜態函式 我們知道類不能夠直接在定義時對其成員變數進行初始化,這部分工作一部分統一放到建構...
類建構函式 析構函式
下面的例項有助於更好地理解建構函式的概念 include using namespace std class line 成員函式定義,包括建構函式 line line void void line setlength double len double line getlength void 程式的...