国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

2017年計(jì)算機(jī)等級考試二級C++輔導(dǎo):C++編譯期間類中的常量

時(shí)間:2017-06-08 15:25:00   來源:無憂考網(wǎng)     [字體: ]

  問題:在類中建立一個(gè)int類型的數(shù)組

  方法一:(錯(cuò)誤)

  class Test

  {

  const int size = 100;

  int array[size];

  //……

  };

  錯(cuò)誤原因:

  1:因?yàn)樵谝粋(gè)類中,const恢復(fù)了它在c中的一部分意思,在每個(gè)類對象里分配存儲(chǔ)并代表一個(gè)值,這個(gè)值一旦被初始化以后就不能被改變。所以在類中使用了const的意思是:在這個(gè)對象的生命周期內(nèi),它是一個(gè)常量。

  然而,每個(gè)對象可能包含不同的值。

  2:對const常量進(jìn)行了初始化,C++中這個(gè)初始化必須由構(gòu)造函數(shù)完成,如const常量在初始化列表中進(jìn)行初始化。

  方法二:(正確,有缺陷)

  使用enum;

  class Test

  {

  enum { size = 100};

  int array[size];

  //……

  };

  使用enum不會(huì)占用對象中的存儲(chǔ)空間的,枚舉常量在編譯的時(shí)候被全部求值。

  缺點(diǎn):

  假如定義一個(gè)非整型的常量該如何?enum無法完成此項(xiàng)操作,同時(shí)喪失了枚舉本來的作用。

  方法三:(正確,)

  使用靜態(tài)常量;

  class Test

  {

  static const int size;

  int array[size];

  //……

  };

  const int Test::size = 100;

  它既是常量,不能改變,又是靜態(tài),在類中只有一個(gè)定義點(diǎn)。所以能夠完成任務(wù)。

  同時(shí),它可以定義任何與定義類型的常量。