C++程式設計規範 4-7章
阿新 • • 發佈:2018-12-21
第4章 類的設計和宣告
1.提高類內聚合度
2.努力使類的介面少而完備
3.保持(不同)類的不同介面在實現原則上的一致性
4.避免為每個類成員提供訪問函式
5.不要在類定義時提供成員函式體
6.恰當選擇成員函式、全域性函式和友元函式
- 虛擬函式必為成員函式
- operator>>和operator<<必為非成員函式,因為第一個引數是cin或cout
- 若函式第一個引數需要隱式型別轉換,則其必不能是成員函式
7.顯示禁止編譯器自動生成不需要的函式:如預設建構函式,拷貝建構函式、賦值函式等。
第5章 繼承
1.公共繼承意味著派生類是基類
2.繼承樹上非葉子節點的類應是虛基類
3.基類解構函式首選是虛擬函式
4.絕不要重新定義預設引數值
5.慎用多重繼承
6.所有多重繼承的基類解構函式都應該是虛擬函式
第6章 記憶體分配和釋放
1.用new delete取代malloc,calloc,realloc,和free
2.確保所有new出來的東西適時被delete掉
3.當物件消亡時確保指標成員指向的系統堆記憶體全部被釋放:將相應的指標成員替換成智慧指標是一個一勞永逸的方法
4.自定義類的new/delete操作符一定要符合原操作符的行為規範
5.自定義了new後一定要定義delete
6.當所指的記憶體被釋放後,指標應有一個合理的值
delete pChar;
pChar=NULL;
7.記住給字串結束符申請空間
第7章 初始化和清除
1.建構函式沒結束,物件就沒有構造出來
- 不能呼叫解構函式
- 建構函式全程不要使用this成員,因為this所指的物件還不完整
- 不要在建構函式中呼叫虛擬函式成員
2.拷貝建構函式和賦值函式儘量用常量引數
MyClass_T(const MyClass_T &rhs); //拷貝建構函式
MyClass_T& operator=(const MyClass_T &rhs); //賦值函式
3.讓賦值函式返回當前物件的引用
MyClass_T& MyClass_T ::operator=(const MyClass_T &rhs)
{
//......
return *this;
}
4.在賦值函式中防範自己賦值自己
MyClass_T& MyClass_T ::operator=(const MyClass_T &rhs)
{
if(this!=&rhs)
{
//......
}
return *this;
}
5.包含資源管理的類應自定義拷貝建構函式、賦值函式和解構函式
6.類應有自己合理的拷貝原則:淺拷貝或深拷貝
7.若編譯時會完全初始化,不要給出陣列的尺寸
int array[]={1,2,3,4}
8.將迴圈索引的初值定在迴圈點附近
9.確保全域性變數在使用前被初始化:編譯器無法保證2個全域性變數初始化的前後