1. 程式人生 > >C++程式設計規範 4-7章

C++程式設計規範 4-7章

第4章 類的設計和宣告

1.提高類內聚合度

2.努力使類的介面少而完備

3.保持(不同)類的不同介面在實現原則上的一致性

4.避免為每個類成員提供訪問函式

5.不要在類定義時提供成員函式體

6.恰當選擇成員函式、全域性函式和友元函式

  1. 虛擬函式必為成員函式
  2. operator>>和operator<<必為非成員函式,因為第一個引數是cin或cout
  3. 若函式第一個引數需要隱式型別轉換,則其必不能是成員函式

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.建構函式沒結束,物件就沒有構造出來

  1. 不能呼叫解構函式
  2. 建構函式全程不要使用this成員,因為this所指的物件還不完整
  3. 不要在建構函式中呼叫虛擬函式成員

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個全域性變數初始化的前後