日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

类设计者的核查表(转自C++rumination)

發布時間:2023/12/14 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类设计者的核查表(转自C++rumination) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1。你的類需要一個構造函數么?

2。你的數據成員是私有的么?

感覺對于簡單的只是用于數據包裝的類不需要把數據成員設成私有,比如一個復數類。對于復雜類的狀態應該設成私有,只允許通過接口函數來更改和讀取成員。

?

3。你的類需要一個無參的構造函數么?

需要,(1).若無無參構造函數,則類似于Point p;的語法是非法的。(2)更重要的是無法生成該類對象的數組, Point pa[100]; //錯誤!!

?

4。是不是每個構造函數初始化所有的數據成員?

為了不導致未初始化錯誤,盡量初始化所有成員,但有些情況例外,比如只有對象存在一段時間之后其成員才有意義。

?

5。類需要析構函數么?

取決于該類是否分配了資源,而這些資源又不會被成員函數自動釋放。

?

6。類需要一個虛析構函數么?

虛析構函數是很有必要的的,當新類繼承此類之后,假如基類沒有虛析構函數,當基類指針指向派生類,析構時可能導致調用錯誤的析構函數。

?

7。你的類需要復制構造函數么?

同樣,取決于當類的構造函數分配資源,比如成員函數里有int *變量。。。

?

8。你的類需要一個賦值操作符么?

同7,一般需要復制構造函數就需要一個賦值操作符

?

9。你的賦值操作符能正確的將對象賦給對象本身么?

?

class String { public:String& operator=(const String& s);//... private:char* data; }; //錯誤實現,無法把對象賦給對象本身 String& String::operator =(const String &s) {delete[] data;data=new char[strlen(s.data)+1];strcpy(data,s.data);return *this; } //正確實現 String& String::operator =(const String &s) {if(&s!=this){delete[] data;data=new char[strlen(s.data)+1];strcpy(data,s.data);}return *this; }?

?

10。 你的類需要定義關系操作符么?

depends

?

11。 操作數組記住delete[]么?

?

12。記得在復制構造函數和賦值操作符的參數類型中加上const了么?

?

13。如果函數有引用參數,他們是const引用么?

總結

以上是生活随笔為你收集整理的类设计者的核查表(转自C++rumination)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。