C 沉思錄 Chap4 設計類的核查表

2022-07-03 17:36:12 字數 1542 閱讀 3219

一. 你需要乙個建構函式嗎?

建構函式 是一種特殊的方法 主要用來在建立物件時初始化物件 即為物件

成員變數

賦初始值,總與new運算子一起使用在建立物件的語句中 特別的乙個類可以有多個建構函式 可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。建構函式的特點:

1.建構函式的命名必須和類名完全相同。 

2.建構函式的功能主要用於在類的物件建立時定義初始化的狀態。它沒有返回值,也不能用void來修飾。

3.建構函式不能被直接呼叫,必須通過new運算子在建立物件時才會自動呼叫。

有些內太簡單,它們的結構就是它們的介面,所以不需要建構函式。但是一般情況下都需要建構函式來初始化成員變數。

二. 你的資料成員是私有的嗎?

一般都需要將類的資料成員設定為私有,否則設計者將無法控制何時訪問這些成員。

三. 你的類需要乙個沒有引數的建構函式嗎?

如果乙個類已經有了建構函式,而你想宣告該類的物件可以不必顯示的初始化它們,則必須顯示地寫乙個午餐的建構函式,例如:

class point

...private:

int x, y;

}此時,如果使用下面的語句則為非法:

point     p; //因為這裡沒有指出怎麼樣初始化物件p

如果需要生成某個類物件的陣列的時候,也需要乙個無參的建構函式。

四. 是不是每個建構函式初始化所有的資料成員?

五. 類需要析構函式嗎?

如果類分配了資源,而這些資源又不會由成員函式自動釋放,則需要析構函式

六. 類需要乙個虛析構函式嗎?

絕不會用作基類的類是不需要虛析構函式的。如果乙個類需要被繼承一般都需要有乙個虛析構函式。虛析構函式通常是空的。

七. 你的類需要複製建構函式嗎?

關鍵要看複製該類的物件是否就相當於複製器資料成員和基類物件。如果不是則需要複製建構函式。

如果你的類在建構函式中分配了資源,則需要乙個顯示的複製建構函式來管理資源。

如:(此時就需要複製建構函式)

class string

一般情況下,當類中包含有指標型別的 資料成員,則需要三大函式(複製建構函式,複製操作符,析構函式)。

八. 你的類需要乙個賦值操作符嗎?

如果需要乙個複製建構函式,就一般也需要乙個賦值操作符。

九. 你的賦值操作符能正確地將物件賦值給物件本身嗎?

比如有這樣乙個類:

class string;

下面是乙個不正確例子:(一旦向自身賦值則會失敗)

string & string::operator=(const string &s)

一下是正確的實現方式:

string & string :: operator=(const string &s)

return *this;

}十. 你的類需要定義關係操作符嗎?

十一. 刪除陣列時你記得用delete 嗎?

十二. 記得在複製建構函式和複製操作符的引數型別中加上const嗎?

十三. 如果函式有引用引數,他們應該是const引用嗎?

《C 沉思錄》筆記 類設計者核查表

類設計者的核查表 1.類需要建構函式麼?2.資料是否需要保持私有的?方案一public int length 方案二public const int length 在建構函式中length true length 這樣由於是const變數,只能讀,不能修改。private int true leng...

類設計者的核查表 c 沉思錄筆記

類的設計時需要弄清楚一些問題,這些問題沒有確切的答案,關鍵是要思考他們,並確認你所作的事情是處於有意識的決定。主要從類的建構函式 析構函式 複製建構函式和賦值操作符 資料成員及const修飾成員函式等五個方面來考慮。1 類的建構函式 類的建構函式主要從是否需要建構函式 是否需要無參的建構函式 是不是...

《C 沉思錄》 第四章 類設計者的核查表

設計乙個類的時候,需要考慮的問題 1 你的類需要乙個建構函式嗎?可能需要乙個建構函式來隱藏內部工作方式。2 你的資料成員是私有的嗎?保證資料的實時性,有效性。比如長度,如果是共有的,被修改了,就不能正確的表達原先所謂的 長度 3 你的類需要乙個無參建構函式嗎?沒有的話,等於禁止了物件陣列。class...