如何實現乙個複數類

2021-07-26 03:27:43 字數 2269 閱讀 1797

在c++中有6個預設的成員函式,分別是建構函式、拷貝建構函式、析構函式、賦值操作符過載、取位址操作符過載和const修飾的取位址操作符過載。在這篇文章中,我將通過實現複數類來對這幾個成員函式做乙個簡單的說明。

1.建構函式

成員變數為私有的,要對它們進行初始化,必須用乙個公有成員函式來進行。同時這個函式應該有且僅在定義物件時自動執行一次,這時呼叫的函式稱為建構函式 。

建構函式是特殊的成員函式,特徵如下:

1. 函式名與類名相同。

2. 無返回值。

3. 物件構造(物件例項化)時系統自動呼叫對應的建構函式。

4. 建構函式可以過載。

6. 如果類定義中沒有給出建構函式,則c++編譯器自動產生乙個預設的建構函式,但只要我們定義了乙個建構函式,系統就不會自動生成預設的建構函式。

7. 無參的建構函式和全預設值的建構函式都認為是預設建構函式,並且預設的建構函式只能有乙個。

2.拷貝建構函式

建立物件時使用同類物件來進行初始化,這時所用的建構函式稱為拷貝建構函式。

拷貝建構函式是特殊的建構函式,特徵如下:

1. 拷貝建構函式其實是乙個建構函式的過載。

2. 拷貝建構函式的引數必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫。

3. 若未顯示定義,系統會預設預設的拷貝建構函式。預設的拷貝建構函式會,依次拷貝類成員進行初始化。

3.析構函式

當乙個物件的生命週期結束時,c++編譯系統會自動呼叫乙個成員函式,這個特殊的成員函式即析構函式。

建構函式是特殊的成員函式,特徵如下:

1. 析構函式在類名加上字元~。

2. 析構函式無引數無返回值。

3. 乙個類有且只有乙個析構函式。若未顯示定義,系統會自動生成預設的析構函式。

4. 物件生命週期結束時,c++編譯系統系統自動呼叫析構函式。

5. 注意析構函式體內並不是刪除物件,而是做一些清理工作。

4.賦值操作符過載

拷貝建構函式是建立的物件,使用乙個已有物件來初始化這個準備建立的物件。賦值運算子的過載是對乙個已存在的物件進行拷貝賦值。

下面來實現複數類:

#include

using

namespace

std;

class complex

complex(const complex& c) //拷貝建構函式

~complex() //析構函式

complex operator =(const complex& c) //賦值函式

bool

operator==(const complex& d) //判斷相等

complex operator+(const complex &d) //兩個複數相加

complex operator-(const complex &d) //兩個複數相減

complex& operator+=(const complex &d) //複數物件+=d

complex& operator-=(const complex &d) //複數物件-=d

complex operator++() //前置++

complex operator++(int) //後置++

complex operator--() //前置--

complex operator--(int) //後置--

void display() //顯示複數的實部和虛部

private:

double _real; //實部

double _image; //虛部

};

下面是測試函式:

void test1()

void test2() //==、+、-、+=、-=

void test3() //前置++、後置++、前置--、後置--

int main()

**部分如上,寫完整個**其實對所謂的幾個成員函式有了更深一步的了解。c++是乙個基於物件導向的語言,難度較c語言還是蠻大的,所以在日常學習中更要注重對基礎知識的積累,要多寫**反覆理解。

編寫乙個類實現複數的運算

編寫乙個類實現複數的運算,並在main方法中運用這些類中的方法進行運算 複數類的屬性有 屬性1 實部,代表複數的實數部分。屬性2 虛部,代表複數的虛數部分。複數類的方法 方法1 建構函式,將實部 虛部都置為0。方法2 獲得複數物件的實部。方法3 獲得複數物件的虛部。方法4 當前複數物件與形式引數複數...

如何實現乙個string類 1

string類是c 當中用的非常頻繁的乙個類,它提供了很多處理字串的函式,讓字串的使用變得像int float等built in型別一樣簡單。string類的實現包含了大量c 語言的知識,其中有很多值得討論的問題。自己動手實現乙個string類是學習c 語言的好方法,可以檢驗自己一下c 基礎知識掌握...

如何實現乙個string類 2

首先來看一下賦值運算子過載。在實際應用中,我們經常遇到需要將乙個物件賦值給另外乙個物件的情況,那麼就需要使用賦值運算子 跟預設的拷貝建構函式一樣,如果我們沒有顯式地定義乙個賦值運算子過載函式,那麼編譯器會提供乙個預設的函式實現賦值功能。大暖男再次出場,不出意外地再次不靠譜。編譯器提供的賦值運算函式只...