C++常對象,常變量,長成員函數詳解(轉)

  • const修飾的聲明數據成員稱爲常數據成員
  • const修飾的聲明成員函數稱爲常成員函數
  • const修飾的定義對象稱爲常對象
變量或對象被const修飾後其值不能被更新。因此被const修飾的變量或對象必須要進行初始化。
(一)用const修飾的聲明數據成員稱爲常數據成員 

   有兩種聲明形式:

const int  cctwl;
int const  cctwl;
不能省略數據類型,可以添加 public private等訪問控制符。 

說明:

  1. 任何函數能對常數據成員賦值
  2. 構造函數對常數據成員進行初始化時也只能通過初始化列表進行。
  3. 常數據成員在初始化時必須賦值或稱其必須初始化.
  4. 如果類有多個默認構造函數必須都初始化常數據成員。

通過下面例子來理解常數據成員以上4點。

A、請指出下面程序的錯誤

C++常對象,常變量,常成員函數詳解(轉)

錯誤一:不能對常數據成員在類中初始化、要通過類的構造函數,只有靜態常量才能這樣初始化。
錯誤二:沒有合適的默認構造函數可用。因爲有常量cctwl沒有初始化必須初始化所有常數據成員。

更正後結果如下:

C++常對象,常變量,常成員函數詳解(轉)

B、多個構造函數下的常數據成員

請指出下面程序的錯誤:

C++常對象,常變量,常成員函數詳解(轉)
錯誤一:每個構造函數都要初始化常數據成員,應改爲

C++常對象,常變量,常成員函數詳解(轉)
(二)用const修飾的聲明聲明成員函數稱爲常成員函數

聲明:<類型標誌符>函數名(參數表)const

說明: 

  1. const是函數類型的一部分,在實現部分也要帶該關鍵字。
  2. const關鍵字可以用於對重載函數的區分。
  3. 常成員函數不能更新任何數據成員,也不能調用該類中沒有用const修飾的成員函數,只能調常成員函數常數據成員

A、通過例子來理解const是函數類型的一部分,在實現部分也要帶該關鍵字。

C++常對象,常變量,常成員函數詳解(轉)

B、通過例子來理解const關鍵字的重載

C++常對象,常變量,常成員函數詳解(轉)
C、通過例子來理解常成員函數不能更新任何數據成員

C++常對象,常變量,常成員函數詳解(轉)

D、通過例子來理解

1、常成員函數可以被其他成員函數調用。
2、但是不能調用其他非常成員函數。
3、可以調用其他常成員函數。

C++常對象,常變量,常成員函數詳解(轉)

(三)const修飾的定義對象稱爲常對象

常對象是指對象的數據成員的值在對象被調用時不能被改變。常對象必須進行初始化,且不能被更新。不能通過常對象調用普通成員函數,但是可以通過普通對象調用常成員函數。常對象只能調用常成員函數

常對象的聲明如下: 

     const   <類名>  <對象名>
     <類名>  const   <對象名>

兩種聲明完全一樣沒有任何區別。

1、通過下面例子來理解常對象:

A、請指出下面程序的錯誤

C++常對象,常變量,常成員函數詳解(轉)
PS:

  • 常成員函數可以引用const數據成員,也可以引用非const的數據成員;
  • const數據成員可以被const成員函數引用,也可以被非const的成員函數引用;
  • 常成員函數不能調用另一個非const成員函數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章