C C 類 構造與析構函式 有理數運算例項

2021-09-17 23:28:22 字數 3147 閱讀 4137

c++實驗**及學習筆記(五)

你好! 這是乙個高程實驗課的**記錄及學習筆記。我將記錄一些重要的知識點、易錯點。但是作為大學生,水平很低,敬請指點教導、優化**。

首先我們來看一下問題

這次的問題乍一看有些雲裡霧裡,讓人不知所云。我們索性把第二問忽略,只看第一問。設計乙個有理數類,表示成分數,進行兩個有理數的加減乘除運算。

首先,我們知道,一切有理數都能表示成分數,那麼我們要設計的類,就要具有分數的特性:資料成員是分子和分母,成員函式是分數的表示、運算如化簡、四則運算等等。這個類可以創造各種各樣的分數物件。

其次這個問題中我們不可避免用到建構函式(析構主要是下一問)我們會對建構函式稍作講解。

類:class rational

成員資料:私有

成員函式:公開

參考文章:c++預設建構函式與建構函式

建構函式:c++用於構建類的新物件時需要呼叫的函式,該函式無返回型別!(注意:是「無」! 不是空!(void))。

預設建構函式:未提供顯式初始值時,用來建立物件的建構函式。

c++語言特性,系統在建立類的新物件的時候會自動呼叫建構函式。而析構函式呢,就是這個物件被銷毀的時候自動呼叫析構函式。乙個伴隨生,乙個伴隨滅。

那麼我們就可以用建構函式和析構函式搞事情,非常方便。比如析構函式可以用來**記憶體,建構函式可以用來初始化物件。

就算你不特意寫建構函式呢,系統也會自己悄悄寫個預設建構函式就不給你顯示出來。畢竟生來就有。

然後當你要寫建構函式的時候呢,除非自己寫個預設建構函式,必須在你的建構函式前面加上乙個預設建構函式,不然報錯。這就是傲嬌吧(`へ´*)ノ

那麼預設特殊在**呢?我們又該怎麼寫建構函式呢?

class testclass

;

如果程式猿沒有定義任何建構函式,則編譯器會自動定義預設建構函式,其形式如 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 程式的...