【C++面向?qū)ο髠渫洝? 各類對象與特性

const 對象

  • const對象的定義:
    const MyClass obj(參數(shù)表);
  • const對象不能被賦值,只能初始化,而且一定要初始化,否則無法設(shè)置它的值。

  • C++規(guī)定:對const對象只能調(diào)用const成員函數(shù)

const 成員函數(shù)

任何不修改數(shù)據(jù)成員的函數(shù)都應(yīng)該聲明為const類型。如果在編寫const成員函數(shù)時,不慎修改了數(shù)據(jù)成員,或者調(diào)用了其他非const成員函數(shù),編譯器將指出錯誤,這無疑會提高程序的健壯性。

定義時和實現(xiàn)時在函數(shù)頭后添加const關(guān)鍵字

const數(shù)據(jù)成員

  • const數(shù)據(jù)成員只在某個對象生存期內(nèi)是常量,而對于整個類而言卻是可變的。同一類的不同的對象其const數(shù)據(jù)成員的值可以不同。

  • 常量(const)數(shù)據(jù)成員聲明:在該成員聲明前加const關(guān)鍵字

  • const數(shù)據(jù)成員的初始化只能在類構(gòu)造函數(shù)的初始化表中進(jìn)行,不能在構(gòu)造函數(shù)中對它賦值。

static數(shù)據(jù)成員

【靜態(tài)(static)數(shù)據(jù)成員】

  • 靜態(tài)數(shù)據(jù)成員不屬于對象的一部分,而是類的一部分;
  • 靜態(tài)數(shù)據(jù)成員的初始化不能放在類的構(gòu)造函數(shù)中;
  • 類定義并不分配空間,空間是在定義對象時分配;
  • 但靜態(tài)數(shù)據(jù)成員屬于類,因此定義對象時并不為靜態(tài)成員分配空間。

【靜態(tài)數(shù)據(jù)成員的定義】

  • 為靜態(tài)成員分配空間稱為靜態(tài)成員的定義;
  • 靜態(tài)成員的定義一般出現(xiàn)在類的實現(xiàn)文件中。如在SavingAccount類的實現(xiàn)文件中,必須要如下的定義:
double SavingAccount::rate = 0.05;
  • 該定義為rate分配了空間,并給它賦了一個初值0.05。
    如果沒有這個定義,連接器會報告一個錯誤。

【靜態(tài)數(shù)據(jù)成員的使用】

  • 可以通過作用域操作符從類直接調(diào)用。如:
SavingAccount::rate 
  • 但從每個對象的角度來看,它似乎又是對象的一部分,因此又可以從對象引用它。如有個SavingAccount類的對象obj,則可以用:
obj.rate
  • 由于是整個類共享的,因此不管用哪種調(diào)用方式,得到的值都是相同的

static成員函數(shù)

定義靜態(tài)成員函數(shù)的主要目的是訪問靜態(tài)的數(shù)據(jù)成員。

【靜態(tài)(static)成員函數(shù)】

  • 成員函數(shù)也可以是靜態(tài)的。靜態(tài)的成員函數(shù)是為類的全體對象服務(wù),而不是為某個類的特殊對象服務(wù)
  • 由于靜態(tài)成員函數(shù)不需要借助任何對象就可以被調(diào)用,所以編譯器不會為它暗加一個this指針。因此,靜態(tài)成員函數(shù)無法處理類中的非靜態(tài)成員變量。
  • 靜態(tài)成員函數(shù)的聲明只需要在類定義中的函數(shù)原型前加上保留詞static

【靜態(tài)成員函數(shù)使用】

  • 靜態(tài)成員函數(shù)可定義為內(nèi)嵌的,也可在類外定義。在類外定義時,不用static。
  • 靜態(tài)成員函數(shù)的訪問:可以通過類作用域限定符或通過對象訪問
類名::靜態(tài)成員函數(shù)名()
對象名.靜態(tài)成員函數(shù)名()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,686評論 1 51
  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,106評論 0 3
  • C++基礎(chǔ)2:類與對象 1. 認(rèn)識類與對象 什么是類(class)?類(class)是類型(type),是用戶自定...
    jdzhangxin閱讀 2,461評論 0 7
  • 她從小生活在一個缺愛,充滿硝煙的家庭里長大,她學(xué)習(xí)聰明,卻很叛逆,因為家里對她疏于管教,她的成績總是中上等。上小學(xué)...
    Spring柴柴閱讀 394評論 0 0
  • 原來,那段時光我們已走過 不過是時光那么短而已 可記憶卻那么長 原來 我們已為了目標(biāo)奮斗過 后來 我們要在迷茫中為...
    夜空星星淚閱讀 231評論 3 2

友情鏈接更多精彩內(nèi)容