原則5:了解C++默默編寫并調(diào)用哪些函數(shù)

這一篇博客是《Effective C++》中第5個條款考廉。但現(xiàn)在感覺我還沒太理解它到底說了什么上忍,所以想寫寫博客,萬一寫著寫著就明白了呢酱吝。
首先在這里敘述一個機制也殖,那就是空類,在默認的情況下务热,編譯器會給它自動生成默認的構(gòu)造函數(shù)忆嗜、拷貝構(gòu)造函數(shù)、拷貝賦值操作符=和析構(gòu)函數(shù)崎岂。并且他們都是public的和inline的捆毫。



它與下面這個類是一樣的。



至于這些成員函數(shù)和操作符是干啥用的该镣,我在前邊的博文中闡述過了冻璃。
其中响谓,默認的構(gòu)造函數(shù)負責(zé)調(diào)用父類和非static的構(gòu)造函數(shù)和析構(gòu)函數(shù)损合。如上圖可見編譯器自動生成的析構(gòu)函數(shù)是非virtual的省艳,如果父類中本身存在virtual的析構(gòu)函數(shù),編譯器就不會自動產(chǎn)生非virtual的析構(gòu)函數(shù)了嫁审。而默認的copy構(gòu)造函數(shù)和copy賦值操作符只是copy非static成員到目標(biāo)對象跋炕。
不過,如果你手動寫了它們中的一些律适,編譯器就只會自動生成你沒寫的辐烂。比如你只寫了構(gòu)造函數(shù),那么其他的東西編譯器負責(zé)給你自動生成捂贿。至于說copy構(gòu)造函數(shù)和copy賦值操作符的用法我以前的博文有提到過纠修。

而copy構(gòu)造函數(shù)總是層層調(diào)用底層的copy構(gòu)造函數(shù)來進行賦值,比如說copy構(gòu)造函數(shù)要copy一個string類型的變量厂僧,那么它就會調(diào)用string的copy構(gòu)造函數(shù)扣草,實在沒辦法了,它再自己進行賦值操作颜屠。
其實本原則著重討論的是在什么情況下編譯器不會自動生成這些東東辰妙。
對于默認的構(gòu)造函數(shù)而言,當(dāng)你手動寫了一個構(gòu)造函數(shù)的話甫窟,編譯器就不會再費那個勁了密浑。
而對于copy賦值操作符呢也是有自動生成條件的,那就是這個copy賦值操作符確實有存在的意義粗井,并且它能在使用場合能正確工作尔破,否則除非你自己手動寫一個,要不然編譯器是不會給你生成這些東東的浇衬。而在書中作者舉了2個例子1個是引用呆瞻,另一個是const常量,這兩者所指的對象都是不能更改的径玖,那你非要給它們賦值痴脾,那肯定會導(dǎo)致copy賦值操作符的失敗。
書中還舉個1個例子梳星,一般情況下父類中如果有copy賦值操作符赞赖,在子類中編譯器是不會再給自動生成copy賦值操作符,直接使用父類的就好了冤灾,因為編譯器認為子類的copy賦值操作符是要能夠處理父類的賦值操作的前域。所以如果你此時把父類的copy賦值操作符設(shè)置為private的,那么你就沒有copy賦值操作符可用了韵吨,除非你自己在子類中寫一個匿垄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子椿疗,更是在濱河造成了極大的恐慌漏峰,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件届榄,死亡現(xiàn)場離奇詭異浅乔,居然都是意外死亡,警方通過查閱死者的電腦和手機铝条,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門靖苇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人班缰,你說我怎么就攤上這事贤壁。” “怎么了埠忘?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵脾拆,是天一觀的道長。 經(jīng)常有香客問我给梅,道長假丧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任动羽,我火速辦了婚禮包帚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘运吓。我一直安慰自己渴邦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布拘哨。 她就那樣靜靜地躺著谋梭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倦青。 梳的紋絲不亂的頭發(fā)上瓮床,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音产镐,去河邊找鬼隘庄。 笑死,一個胖子當(dāng)著我的面吹牛癣亚,可吹牛的內(nèi)容都是我干的丑掺。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼述雾,長吁一口氣:“原來是場噩夢啊……” “哼街州!你這毒婦竟也來了兼丰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤唆缴,失蹤者是張志新(化名)和其女友劉穎鳍征,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琐谤,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡蟆技,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年玩敏,在試婚紗的時候發(fā)現(xiàn)自己被綠了斗忌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡旺聚,死狀恐怖织阳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砰粹,我是刑警寧澤唧躲,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站碱璃,受9級特大地震影響弄痹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嵌器,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一肛真、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爽航,春花似錦蚓让、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衷佃,卻和暖如春趟卸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氏义。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工锄列, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人觅赊。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓右蕊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吮螺。 傳聞我的和親對象是個殘疾皇子饶囚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,523評論 1 51
  • 1. 讓自己習(xí)慣C++ 條款01:視C++為一個語言聯(lián)邦 為了更好的理解C++帕翻,我們將C++分解為四個主要次語言:...
    Mr希靈閱讀 2,820評論 0 13
  • 一個博客,這個博客記錄了他讀這本書的筆記萝风,總結(jié)得不錯嘀掸。《深度探索C++對象模型》筆記匯總 1. C++對象模型與內(nèi)...
    Mr希靈閱讀 5,593評論 0 13
  • 上學(xué)起, 給了你橡皮和鉛筆规惰。 希望你, 橫平豎直,方方正正, 寫好一筆一筆睬塌。 錯了,也別著急, 因為還有橡皮歇万。 擦...
    拈花惹草閱讀 474評論 0 1
  • 說到游泳揩晴,大家一定不陌生,每個人的童年時光都有或多或少不一樣的經(jīng)歷贪磺,有些人兒童時期就已成為游泳高手硫兰,有些人則是...
    遇見未知的自己珍珍閱讀 291評論 4 1