1. 程式人生 > >c++ 定義常量的兩種方式 和 區別

c++ 定義常量的兩種方式 和 區別

使用常量的好處就顯而易見,用常量的有下面一些好處:
1:增強程式的可讀性。用一個有意義的常量字串代替一個常數,程式讀起來會更加的方便。

2:如果很多地方用到像PI(3.14159)這樣的常量,可以一改改全域性。

常量是在程式執行中不能被改變的識別符號。
C++中定義常量可以用#define 、const 這兩種方法。
例如:


#define PRICE 10 //定義單價常量10
const int PRICE = 10; //定義單價常量10

區別:
其中#define是定義巨集變數,它其實是在編譯之前,由預處理指令把程式碼裡面的巨集變數用指定的字串替換,它不做語法檢查,而constant 則是定義含有變數型別的常量。
一般說來推薦使用constant定義常量,它在編譯時會做語法檢查。Effective c++ 的條款1中:“儘量用編譯器而不用預處理”,因為#define經常被認為好象不是語言本身的一部分。而且有時候用巨集,會出現意想不到的輸出結果。

兩者比較:

(1) const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤(邊際效應) 。
(2) 有些整合化的除錯工具可以對 const 常量進行除錯, 但是不能對巨集常量進行除錯。