4. C++ 封裝

談到封裝,我們這里指的是對(duì)類的成員的私有化,其實(shí)究其根本做的比較多的是對(duì)成員變量隱藏肛根。

private 關(guān)鍵字的作用在于更好地隱藏類的內(nèi)部實(shí)現(xiàn)兰吟,我們可以成為“私有”。它與我們之前看到的public屬于同一類的關(guān)鍵字。

C++設(shè)計(jì)規(guī)范要求,實(shí)際項(xiàng)目開(kāi)發(fā)中的成員變量以及只在類內(nèi)部使用的成員函數(shù)(只被成員函數(shù)調(diào)用的成員函數(shù))都建議聲明為 private,而只將允許通過(guò)對(duì)象調(diào)用的成員函數(shù)聲明為 public斋射。

對(duì)于訪問(wèn)權(quán)限限定符:public、private但荤、protected我們將在后面繼承中給大家細(xì)說(shuō)罗岖。

封裝,即對(duì)類中的成員變量進(jìn)行private私有化的修飾腹躁,隱藏其可見(jiàn)性桑包,如果類外想進(jìn)行訪問(wèn),可以通過(guò)setXXX函數(shù)和getXXX函數(shù)進(jìn)行成員變量的賦值和取值纺非。
基本的要求是針對(duì)每一個(gè)private封裝的成員變量要有一對(duì)set函數(shù)和get函數(shù)與其對(duì)應(yīng)哑了,函數(shù)名以get或set開(kāi)頭,后接成員變量名烧颖,如 setAge(int age)弱左,getAge()。

例如:

#include<iostream>
using namespace std;

class Member
{
private:
    string name;
    double salary;
public:
    void setName(string name);
    string getName();
    void setSalary(double salary);
    double getSalary();
};
void Member::setName(string name)
{
    this->name = name;
}
string Member::getName()
{
    return this->name;
}
void Member::setSalary(double salary)
{
    this->salary = salary;
}
double Member::getSalary()
{
    return this->salary;
}
int main()
{
    Member m;
    m.setName("張三");
    cout << m.getName() << endl;
return 0;
}

this是一個(gè)關(guān)鍵字炕淮,也是一個(gè) const 指針拆火,它指向當(dāng)前對(duì)象,通過(guò)它可以訪問(wèn)當(dāng)前對(duì)象的所有成員涂圆。
this->name 指定的是當(dāng)前對(duì)象的成員變量name们镜。

注意:
1、this是const指針润歉,它的值是不能被修改的模狭,修改該指針的操作都是不允許的,如賦值踩衩、遞增嚼鹉、遞減等贩汉。
2、this 只能在成員函數(shù)內(nèi)部使用锚赤,用在其他地方?jīng)]有意義匹舞,也是非法的。
3宴树、只有當(dāng)對(duì)象被創(chuàng)建后 this 才有意義策菜,因此不能在 static 成員函數(shù)中使用晶疼,后續(xù)會(huì)講到 static酒贬。

從編譯器的原理來(lái)說(shuō),this 實(shí)際上是成員函數(shù)的一個(gè)形參翠霍,在調(diào)用成員函數(shù)時(shí)將對(duì)象的地址作為實(shí)參傳遞給 this锭吨。
這個(gè)形參是隱式的,它并不出現(xiàn)在代碼中寒匙,而是在編譯階段由編譯器將它添加到參數(shù)列表中零如。

this 在我們程序中主要是區(qū)別成員變量和局部變量。

說(shuō)到這兩個(gè)形式的變量锄弱,我們就來(lái)總結(jié)下

(1)位置不同
成員變量:類中函數(shù)外
局部變量:函數(shù)定義中或者函數(shù)聲明上

(2)在內(nèi)存中的位置不同
成員變量:在堆中
局部變量:在棧中

(3)生命周期不同
成員變量:隨著對(duì)象的創(chuàng)建而產(chǎn)生考蕾,隨著對(duì)象的銷毀而消失
局部變量:隨著函數(shù)執(zhí)行到該變量產(chǎn)生,隨著函數(shù)的執(zhí)行完畢而消失

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末会宪,一起剝皮案震驚了整個(gè)濱河市肖卧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掸鹅,老刑警劉巖塞帐,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異巍沙,居然都是意外死亡葵姥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門句携,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榔幸,“玉大人,你說(shuō)我怎么就攤上這事矮嫉∧盗桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵敞临,是天一觀的道長(zhǎng)态辛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)挺尿,這世上最難降的妖魔是什么奏黑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任炊邦,我火速辦了婚禮,結(jié)果婚禮上熟史,老公的妹妹穿的比我還像新娘馁害。我一直安慰自己,他們只是感情好蹂匹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布碘菜。 她就那樣靜靜地躺著,像睡著了一般限寞。 火紅的嫁衣襯著肌膚如雪忍啸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天履植,我揣著相機(jī)與錄音计雌,去河邊找鬼。 笑死玫霎,一個(gè)胖子當(dāng)著我的面吹牛凿滤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播庶近,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翁脆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鼻种?” 一聲冷哼從身側(cè)響起反番,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎普舆,沒(méi)想到半個(gè)月后恬口,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沼侣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年祖能,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛾洛。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡养铸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轧膘,到底是詐尸還是另有隱情钞螟,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布谎碍,位于F島的核電站鳞滨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蟆淀。R本人自食惡果不足惜拯啦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一澡匪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褒链,春花似錦唁情、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至兵迅,卻和暖如春抢韭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喷兼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工篮绰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留后雷,地道東北人季惯。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像臀突,于是被迫代替她去往敵國(guó)和親勉抓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束候学,并將收入和稅金輸出到文件tax. out藕筋。 檢查...
    SeanC52111閱讀 2,799評(píng)論 0 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,111評(píng)論 1 32
  • 重新系統(tǒng)學(xué)習(xí)下C++;但是還是少了好多知識(shí)點(diǎn)梳码;socket隐圾;unix;stl掰茶;boost等暇藏; C++ 教程 | 菜...
    kakukeme閱讀 19,943評(píng)論 0 50
  • 五月臨近 你在悠悠地開(kāi) 我們將再次相遇人海 相遇在每一個(gè)你途徑的路旁 你著一身綠裝 白色的襯衣得體而大方 你靜靜地...
    劉炳清閱讀 622評(píng)論 1 6
  • 大概春節(jié)前不久,有好友在圈里發(fā)個(gè)起早打卡的鏈接濒蒋,我這種什么都好新鮮的人順手加入盐碱,不就十塊錢嗎?不夠一個(gè)盒飯的沪伙! 好...
    卉19253閱讀 245評(píng)論 0 1