1.
為防止頭文件被重復利用(通常發(fā)生在#include的嵌套中),應用#ifndef/#define/#endif產(chǎn)生預處理塊。比如要防止graphics.h的頭文件被重復利用,定義#ifndef GRAPHICS_H。(為什么用大寫?)。
2.
好的命名規(guī)則:靜態(tài)變量加前綴s_,全局變量加前綴g_,類的數(shù)據(jù)成員加前綴m_。
3.
不可將bool變量直接與TRUE,FALSE或者1,0進行比較。區(qū)別于整型變量與零值比較。不可將浮點變量用“==”或“!=”與數(shù)字比較,應設法轉(zhuǎn)化成“>=”或“<=”形式。應當將指針變量用“==”或“!=”與NULL比較,指針變量的零值為“空”(記為NULL)。盡管NULL的值與0相同,但兩者的意義不同。(參考高質(zhì)量C++編程指南4.3節(jié))。
4.
在多重循環(huán)中,如果有可能,應當將最長的循環(huán)放在最內(nèi)層,最短的放在最外層,以減少CPU跨切循環(huán)層的次數(shù)。
5.
如果循環(huán)體內(nèi)存在邏輯判斷,并且循環(huán)次數(shù)很大,宜將邏輯判斷移到循環(huán)體的外面。
6.
C語言用#define來定義常量(稱為宏常量)。C++語言除了#define外還可以用const來定義常量(稱為const常量)。在C++程序中只使用const常量而不使用宏常量,因為其相比#define來定義常量有更多的優(yōu)點。Const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。因此編譯器可以對前者進行安全檢查。
7.
建立在整個類中都恒定的常量:別指望const數(shù)據(jù)成員了,應該用類中的枚舉常量來實現(xiàn)。由于const數(shù)據(jù)成員只在某個對象生存期內(nèi)是常量,而對整個類而言是可變的,因為類可以創(chuàng)建多個對象,不同對象其const數(shù)據(jù)成員值可以不同。枚舉常量不會占用對象的存儲空間,他們在編譯時被全部求值。枚舉常量的缺點是它的隱含數(shù)據(jù)類型是整數(shù),其最大值有限,且不能表示浮點數(shù)。
8.
如果參數(shù)是指針,并且僅做輸入用,則應在類型前加const,以防止該指針在函數(shù)體內(nèi)被以外修改。
9.
函數(shù)名字與返回值類型在語義上不可沖突,違反這條規(guī)則的典型代表是C標準庫函數(shù)getchar。由于getchar的原型為int getchar(void)。
10.
指針有些“似是而非”的特征:(1)指針消亡了,并不表示它所指的內(nèi)存會被自動釋放(2)內(nèi)存被釋放了,并不表示指針會消亡或者成為NULL指針。
11.
exit(1)終止整個程序的運行?