5.1 為什么需要常量
【規(guī)則5-1-1】 盡量使用含義直觀的常量來(lái)表示那些將在程序中多次出現(xiàn)的數(shù)字或
字符串。
5.2 const 與#define的比較
(1) const 常量有數(shù)據(jù)類型,而宏常量沒(méi)有數(shù)據(jù)類型。編譯器可以對(duì)前者進(jìn)行類型安 全檢查。而對(duì)后者只進(jìn)行字符替換,沒(méi)有類型安全檢查,并且在字符替換可能會(huì) 產(chǎn)生意料不到的錯(cuò)誤(邊際效應(yīng))。
(2) 有些集成化的調(diào)試工具可以對(duì)const 常量進(jìn)行調(diào)試,但是不能對(duì)宏常量進(jìn)行調(diào)試。
【規(guī)則5-2-1】在 C++ 程序中只使用 const 常量而不使用宏常量,即 const 常量完全取代宏常量。
5.3 常量定義規(guī)則
【規(guī)則5-3-1】需要對(duì)外公開(kāi)的常量放在頭文件中,不需要對(duì)外公開(kāi)的常量放在定義文件的頭部。為便于管理,可以把不同模塊的常量集中存放在一個(gè)公共的頭文件中。
【規(guī)則5-3-2】如果某一常量與其它常量密切相關(guān),應(yīng)在定義中包含這種關(guān)系,而不應(yīng)給出一些孤立的值。
5.4 類中的常量
不能再類聲明中初始化const數(shù)據(jù)成員。因?yàn)轭惖膶?duì)象未被創(chuàng)建時(shí),編譯器不知道SIZE的值是什么。const數(shù)據(jù)成員的初始化只能在類構(gòu)造函數(shù)的初始化列表中進(jìn)行。
建立在整個(gè)類中都恒定的常量應(yīng)該用類中的枚舉來(lái)實(shí)現(xiàn)。
枚舉常量不會(huì)占用對(duì)象的存儲(chǔ)空間,它們?cè)诰幾g時(shí)被全部求值。枚舉常量的缺點(diǎn)是:它的隱含類型是整數(shù),其最大值有限,并且不能表示浮點(diǎn)數(shù)。