類:
在定義類的時(shí)候不能對(duì)成員變量賦值赞警,因?yàn)轭愔皇且环N數(shù)據(jù)類型或者說(shuō)是一種模板验辞。類可以看做是一種數(shù)據(jù)類型,它類似于普通的數(shù)據(jù)類型唱星,但是又有別于普通的數(shù)據(jù)類型雳旅。類這種數(shù)據(jù)類型是一個(gè)包含成員變量和成員函數(shù)的集合。
類的成員變量
有數(shù)據(jù)類型和名稱间聊,占用固定長(zhǎng)度的內(nèi)存攒盈。但是,在定義類的時(shí)候不能對(duì)成員變量賦值
類的成員函數(shù)
有返回值和參數(shù)列表哎榴,它與一般函數(shù)的區(qū)別是:成員函數(shù)是一個(gè)類的成員型豁,出現(xiàn)在類體中,它的作用范圍由類來(lái)決定尚蝌。
成員函數(shù)定義在類外時(shí)迎变,就必須在函數(shù)名前面加上類名予以限定 :: 被稱為域解析符(也稱作用域運(yùn)算符或作用域限定符),用來(lái)連接類名和函數(shù)名驼壶,指明當(dāng)前函數(shù)屬于哪個(gè)類氏豌。
成員函數(shù)必須先在類體中作原型聲明,然后在類外定義热凹,也就是說(shuō)類體的位置應(yīng)在函數(shù)定義之前泵喘。
在類體中和類體外定義成員函數(shù)的區(qū)別
在類體中和類體外定義成員函數(shù)是有區(qū)別的:在類體中定義的成員函數(shù)會(huì)自動(dòng)成為內(nèi)聯(lián)函數(shù),在類體外定義的不會(huì)般妙。當(dāng)然纪铺,在類體內(nèi)部定義的函數(shù)也可以加 inline 關(guān)鍵字,但這是多余的碟渺,因?yàn)轭愺w內(nèi)部定義的函數(shù)默認(rèn)就是內(nèi)聯(lián)函數(shù)鲜锚。
內(nèi)聯(lián)函數(shù)一般不是我們所期望的,它會(huì)將函數(shù)調(diào)用處用函數(shù)體替代苫拍,所以我建議在類體內(nèi)部對(duì)成員函數(shù)作聲明芜繁,而在類體外部進(jìn)行定義,這是一種良好的編程習(xí)慣绒极,實(shí)際開(kāi)發(fā)中大家也是這樣做的骏令。
C++類成員的訪問(wèn)權(quán)限以及類的封裝
C++通過(guò) public雏节、protected棠赛、private 三個(gè)關(guān)鍵字來(lái)控制成員變量和成員函數(shù)的訪問(wèn)權(quán)限枫慷,它們分別表示公有的爱只、受保護(hù)的、私有的凰兑,被稱為成員訪問(wèn)限定符妥粟。
###訪問(wèn)
在類的內(nèi)部(定義類的代碼內(nèi)部),無(wú)論成員被聲明為 public吏够、protected 還是 private勾给,都是可以互相訪問(wèn)的,沒(méi)有訪問(wèn)權(quán)限的限制稿饰。
在類的外部(定義類的代碼之外)锦秒,只能通過(guò)對(duì)象訪問(wèn)成員,并且通過(guò)對(duì)象只能訪問(wèn) public 屬性的成員喉镰,不能訪問(wèn) private旅择、protected 屬性的成員。
類的聲明和成員函數(shù)的定義都是類定義的一部分侣姆,在實(shí)際開(kāi)發(fā)中生真,我們通常將類的聲明放在頭文件中,而將成員函數(shù)的定義放在源文件中捺宗。
private 關(guān)鍵字的作用在于更好地隱藏類的內(nèi)部實(shí)現(xiàn)柱蟀,該向外暴露的接口(能通過(guò)對(duì)象訪問(wèn)的成員)都聲明為 public,不希望外部知道蚜厉、或者只在類內(nèi)部使用的长已、或者對(duì)外部沒(méi)有影響的成員,都建議聲明為 private昼牛。
根據(jù)C++軟件設(shè)計(jì)規(guī)范术瓮,實(shí)際項(xiàng)目開(kāi)發(fā)中的成員變量以及只在類內(nèi)部使用的成員函數(shù)(只被成員函數(shù)調(diào)用的成員函數(shù))都建議聲明為 private,而只將允許通過(guò)對(duì)象調(diào)用的成員函數(shù)聲明為 public贰健。