Chapter7 Classes

//舉例
class myclass
{
  public:
    int get_x() const;
    myclass &get_me() const;
  private:
    int x;
    double y;
}

關(guān)于const

建議盡可能使用const來定義方法, 這樣這個方法可以用于const對象

int get_x () const
{
  return x;
}

其中的const代表this指針是const類型, 聲明之后代表本函數(shù)不會對任何私有變量修改.

但是出現(xiàn)了額外的一種情況, 對于get_me()函數(shù), 返回的是對自己的引用, 但是const限制了后續(xù)作為左值不能修改了, 于是我們考慮重載此函數(shù), 對于const的調(diào)用和非const 的調(diào)用使用不同的方法.

myclass &get_me() const;
myclass &get_me;
//這兩種方法調(diào)用do_get_me(), 在這個函數(shù)里進(jìn)行具體操作
void do_get_me() const;

將一個成員設(shè)置為mutable類型, 那么即使對象是const類型, 這個成員也可以修改.

constexpr對象

為了將一個對象聲明稱constexpr類型, 類必須至少有constexpr的構(gòu)造方法, 并且構(gòu)造賦值必須都是字面值常量

構(gòu)造函數(shù)

構(gòu)造函數(shù)的正確聲明方法

myclass::myclass(int a, int b):x(a),y(b){/* .....*/}

而不是將賦值寫在函數(shù)里, 那樣會先讓x, y被默缺省初始化, 然后進(jìn)行賦值(你懂的,有時候缺省初始化會有一些事故)


myclass() = default使用缺省方法構(gòu)造(即保留缺省構(gòu)造函數(shù))


explicit修飾的構(gòu)造函數(shù)可以防止隱形轉(zhuǎn)換, 但是explicit也阻止了構(gòu)造函數(shù)內(nèi)語句的拷貝賦值


構(gòu)造函數(shù)的成員初始化順序和構(gòu)造函數(shù)無關(guān), 和在類中的聲明順序有關(guān)


委托構(gòu)造函數(shù)

即,構(gòu)造函數(shù)提供的參數(shù)是缺少的, 會再調(diào)用其他構(gòu)造函數(shù)

myclass::myclass(int a):myclass(a, 4.4)

不完全類

為了實現(xiàn)類似鏈表的*next效果, 我們可以先聲明一個類而不去定義它(可以用于指針, 引用,static)

class your_class;
class myclass
{
  your_class *next;
}

static

static成員不屬于對象, 而是屬于類, 因此與static單獨相關(guān)的方法應(yīng)該被聲明未static類型(如他的構(gòu)造方法, get方法). static函數(shù)體內(nèi)沒有this指針, 也不應(yīng)該聲明為const類型

如果static成員函數(shù)是在類外部定義的, 那么外部定義時不能再寫static關(guān)鍵字.

如果static變量是在類外部定義類似于全局變量, static成員的定義應(yīng)該在所有函數(shù)之外.int myclass::mystatic = initialStatic();
如果static變量是在類內(nèi)部定義, 則必須用constexpr進(jìn)行. 即使在類內(nèi)定義, 推薦同時在類外定義一下.constexpr int myclass::mystatic


static的特殊作用
  1. static成員可以是不完全類型, 即本類可以有static本類
  2. static成員可以作為構(gòu)造函數(shù)的默認(rèn)實參
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掏觉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子值漫,更是在濱河造成了極大的恐慌澳腹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杨何,死亡現(xiàn)場離奇詭異酱塔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)危虱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門羊娃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人埃跷,你說我怎么就攤上這事蕊玷。” “怎么了弥雹?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵集畅,是天一觀的道長。 經(jīng)常有香客問我缅糟,道長挺智,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任窗宦,我火速辦了婚禮赦颇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赴涵。我一直安慰自己媒怯,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布髓窜。 她就那樣靜靜地躺著扇苞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寄纵。 梳的紋絲不亂的頭發(fā)上鳖敷,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音程拭,去河邊找鬼定踱。 笑死,一個胖子當(dāng)著我的面吹牛恃鞋,可吹牛的內(nèi)容都是我干的崖媚。 我是一名探鬼主播亦歉,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畅哑!你這毒婦竟也來了肴楷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荠呐,失蹤者是張志新(化名)和其女友劉穎阶祭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體直秆,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡濒募,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了圾结。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰剃。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖筝野,靈堂內(nèi)的尸體忽然破棺而出晌姚,到底是詐尸還是另有隱情,我是刑警寧澤歇竟,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布挥唠,位于F島的核電站,受9級特大地震影響焕议,放射性物質(zhì)發(fā)生泄漏宝磨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一盅安、第九天 我趴在偏房一處隱蔽的房頂上張望唤锉。 院中可真熱鬧,春花似錦别瞭、人聲如沸窿祥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晒衩。三九已至,卻和暖如春墙歪,著一層夾襖步出監(jiān)牢的瞬間听系,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工箱亿, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留臼予,地道東北人舱呻。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓沥曹,卻偏偏與公主長得像奄薇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脑豹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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