C++常量的定義


1、宏定義

  #define  DEMO  10

  這種方式定義的常量,在編譯時,編譯器看不到DEMO這個名稱,在預處理的時候都被替換了。於是DEMO沒有進入符號表內,這樣,在運用此常量的地方出現編譯錯誤時,錯誤信息不會提到DEMO,會導致難以定位錯誤信息。另外在進行調試時,也看不到DEMO名稱。

2、const常量定義

  (1)const定義普通常量

  const int demo = 10;                                    

  const char* const pDemo = "hello world";  

  const有內鏈接屬性,所以在頭文件中這樣定義常量時,不會出現多個編譯單元次引用頭文件時出現鏈接錯誤。並且一般的編譯器會給const變量只分配一個存儲空間。

  (2)const定義類專屬常量

  class Demo{

  private:

    static const int demo = 10;           //常量聲明式,static確保此常量在類中只有一份實體

    int arrDemo[demo];                      //使用該常量

  };

  class中的是聲明式(對於整數常量可以進行in-class初值設定,所以在聲明式中給初值10),必須在cpp文件中給出定義式:

  const int Demo::demo;

  有的編譯器不允許static成員在聲明式中給初值,就只能在定義的時候給初值。

3、enum定義常量

  enum { DEMO = 10, };

  去const常量的地址是合法的,但是取enum的地址不合法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM