程序員面試寶典C++

名詞解釋

1.數(shù)據(jù)抽象

  • 數(shù)據(jù)抽象是一種依賴于接口和實(shí)現(xiàn)分離的編程技術(shù)椭蹄。
  • 令程序員可以忽略類型的實(shí)現(xiàn)細(xì)節(jié)坊萝,只關(guān)注類型執(zhí)行的操作
  • 保證類內(nèi)數(shù)據(jù)的安全性宋下,不被隨意修改

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

  • 對象創(chuàng)建時(shí)咙好,用來控制對象初始化過程的函數(shù)叫作構(gòu)造函數(shù)造挽。
  • 構(gòu)造函數(shù)的任務(wù)是初始化類對象的數(shù)據(jù)成員

3.各種構(gòu)造函數(shù)

  • 默認(rèn)構(gòu)造函數(shù):當(dāng)沒有提供任何實(shí)參時(shí)使用的構(gòu)造函數(shù)
  • 顯式構(gòu)造函數(shù):可以用一個(gè)單獨(dú)的實(shí)參調(diào)用但是不能用于隱式轉(zhuǎn)換的構(gòu)造函數(shù)
  • 合成默認(rèn)構(gòu)造函數(shù):沒有顯式地定義任何構(gòu)造函數(shù)類碱璃,編譯器會為其創(chuàng)建合成默認(rèn)構(gòu)造函數(shù)

4.友元

  • 類向外部提供其非公有成員訪問權(quán)限的方式
  • 友元的訪問權(quán)限和成員函數(shù)一樣
  • 友元可以是類也可以是函數(shù)

5.拷貝構(gòu)造函數(shù)

  • 將新對象初始化為同類型另一對象的副本
  • 當(dāng)以傳值的方式向函數(shù)傳遞對象或者從函數(shù)返回對象時(shí)會隱式使用拷貝構(gòu)造函數(shù)

6.刪除的函數(shù)

  • 不能使用的函數(shù)
  • =delete
  • 用途是告訴編譯器不要合成拷貝操作

7.析構(gòu)函數(shù)

  • 釋放對象使用的資源弄痹,并銷毀對象的非靜態(tài)數(shù)據(jù)成員
  • 當(dāng)對象離開作用域或者被釋放時(shí)進(jìn)行清理工作
  • 編譯器會自動(dòng)銷毀每個(gè)數(shù)據(jù)成員。類類型的成員調(diào)用其析構(gòu)函數(shù)來銷毀嵌器。內(nèi)置類型或者復(fù)合類型 的成員的銷毀不需要任何操作

8.重載運(yùn)算符

  • 一種函數(shù)
  • 重定義了運(yùn)算符應(yīng)用于類類型對象時(shí)的含義

9.各種合成函數(shù)

  • 合成賦值運(yùn)算符
    • 編譯器為未顯示定義對應(yīng)的構(gòu)造函數(shù)的類創(chuàng)建的合成的拷貝賦值運(yùn)算符版本
    • 除非定義為刪除的肛真,合成賦值運(yùn)算符會逐成員將右側(cè)運(yùn)算對象賦予左側(cè)運(yùn)算對象
  • 合成拷貝構(gòu)造函數(shù)
    • 除非定義為刪除的,合成拷貝構(gòu)造函數(shù)分別從給定對象拷貝成員來逐成員地初始化新對象
  • 合成析構(gòu)函數(shù)
    • 函數(shù)體為空

10.抽象基類

  • 含有純虛函數(shù)的類爽航,無法創(chuàng)建抽象基類的對象

11.基類

  • 可供其他類繼承的類蚓让。基類的成員也將成為派生類的成員

12.動(dòng)態(tài)綁定

  • 使用動(dòng)態(tài)綁定讥珍,可以在一定程度上忽略相似類型的區(qū)別
  • 直到運(yùn)行時(shí)才確定到底執(zhí)行函數(shù)的哪個(gè)版本
  • 運(yùn)行時(shí)根據(jù)引用或者指針?biāo)壎▽ο蟮膶?shí)際類型來選擇執(zhí)行虛函數(shù)的某一個(gè)版本

13.動(dòng)態(tài)類型

  • 對象在運(yùn)行時(shí)的類型
  • 引用所引對象或者指針?biāo)笇ο蟮膭?dòng)態(tài)類型可能與該引用或指針的靜態(tài)類型不同
  • 基類的指針或引用可以指向或者引用一個(gè)派生類對象历极。在這樣的情況下:
    • 靜態(tài)類型是基類的引用或者指針
    • 動(dòng)態(tài)類型是派生類的引用或指針

14.繼承

  • 使用繼承,可以定義相似的類型衷佃,并對其相似關(guān)系建模
  • 有一個(gè)已有的基類定義一個(gè)派生類的技術(shù)
  • 派生類將繼承基類的成員
  • 不同類型
    • 私有繼承:基類的公有成員和受保護(hù)的成員是派生類的私有成員
    • 公有繼承:基類的公有接口是派生類共有接口的組成部分
    • 受保護(hù)的繼承:基類的公有成員和受保護(hù)成員是派生類的受保護(hù)成員

15.覆蓋

  • 派生類中定義的虛函數(shù)如果與基類中定義的同名虛函數(shù)有相同的形參列表执解,則派生類版本將覆蓋基類的版本

16.多態(tài)

  • 多態(tài)是指程序能通過引用或指針的動(dòng)態(tài)類型獲取類型特定行為的能力
  1. 純虛函數(shù)
  • 在類的內(nèi)部聲明虛函數(shù)時(shí),在分號之前使用=0
  • 一個(gè)純虛函數(shù)不需要被定義纲酗。
  • 純虛函數(shù)表明該基類成員函數(shù)沒有實(shí)際意義衰腌,是作為一個(gè)抽象意義存在

18.重構(gòu)

  • 通常情況下,重構(gòu)類的方式是將數(shù)據(jù)成員和函數(shù)成員移動(dòng)到繼承體系的高級別節(jié)點(diǎn)中觅赊,避免代碼冗余

19.虛函數(shù)

  • 通過引用或指針對虛函數(shù)的調(diào)用直到運(yùn)行是才被解析

指針和引用的區(qū)別:

  • 非空區(qū)別:指針可以不指向任何對象右蕊,而引用則必須指向一個(gè)對象
  • 合法性區(qū)別:使用引用之前不需要測試合法性,而使用指針則需要考慮指針是否為空
  • 可修改區(qū)別:可以修改指針指向哪個(gè)對象吮螺,但是引用指向的對象不能改變
  • 應(yīng)用區(qū)別:
    • 使用指針:
      • 存在不指向任何對象的可能
      • 需要能夠在不同時(shí)刻指向不同對象
    • 使用引用:總是指向一個(gè)對象饶囚,不會改變指向時(shí)盡量使用引用。

野指針

  • 指向一個(gè)已經(jīng)刪除的對象或者未申請鸠补,訪問受限內(nèi)存區(qū)域的指針
  • 成因:
    • 指針變量未初始化
    • 指針釋放后未置空
    • 指針操作超越變量的作用域
  • 規(guī)避:
    • 初始化時(shí)置為NULL
    • 釋放時(shí)置為NULL

內(nèi)聯(lián)函數(shù)和宏

  • 將函數(shù)指定為內(nèi)聯(lián)函數(shù)萝风,通常是將它在每個(gè)調(diào)用點(diǎn)上 內(nèi)聯(lián)地 展開→消除了函數(shù)在運(yùn)行時(shí)的開銷。
  • 內(nèi)聯(lián)函數(shù)和普通函數(shù)相比可以加快程序運(yùn)行的速度紫岩,因?yàn)椴恍枰袛嗾{(diào)用规惰,在編譯的時(shí)候內(nèi)聯(lián)函數(shù)可以直接被鑲嵌到目標(biāo)代碼中。
  • 宏只是一個(gè)簡單的替換泉蝌。
  • 內(nèi)聯(lián)函數(shù)要做參數(shù)檢查而宏不需要歇万。
  • 內(nèi)聯(lián)函數(shù)和宏相比沒有付出額外代價(jià)的情況下更安全。
  • 內(nèi)聯(lián)函數(shù)一般只用于如下情況:一個(gè)函數(shù)被不斷重復(fù)調(diào)用勋陪;函數(shù)只有簡單的幾行且不包含for/while/switch語句贪磺。
  • 類的構(gòu)造函數(shù)和析構(gòu)函數(shù)盡量在類外定義,因?yàn)轭悆?nèi)定義即為內(nèi)聯(lián)函數(shù)诅愚。

malloc/free和new/delete的區(qū)別

  • 前者是標(biāo)準(zhǔn)庫函數(shù)寒锚,后者是運(yùn)算符,都可以用于申請動(dòng)態(tài)內(nèi)存和釋放內(nèi)存
  • 對于非內(nèi)部數(shù)據(jù)類型的對象而言,前者只能分配內(nèi)存區(qū)域刹前,而無法執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)

this指針

  • 本質(zhì)是一個(gè)函數(shù)參數(shù)泳赋, 指向調(diào)用當(dāng)前成員函數(shù)對象的常量指針
  • 成員函數(shù)開始前構(gòu)造,成員函數(shù)結(jié)束后清除
  • 不占用對象的空間

類的靜態(tài)成員

構(gòu)造函數(shù)腮郊、析構(gòu)函數(shù)摹蘑、拷貝構(gòu)造函數(shù)筹燕、拷貝賦值運(yùn)算符

虛函數(shù)

  • 是否可以把每個(gè)函數(shù)都聲明為虛函數(shù)
    • 不行轧飞,每個(gè)虛函數(shù)的對象都必須維護(hù)一個(gè)虛函數(shù)表,因此在使用虛函數(shù)時(shí)會產(chǎn)生額外的系統(tǒng)開銷撒踪。
    • 虛函數(shù)表:一個(gè)類的虛函數(shù)的地址表

友元

  • 不是類的成員函數(shù)但是可以訪問類的私有成員
  • 需要在類內(nèi)聲明过咬,在類外定義
  • 可以是函數(shù)也可以是一個(gè)類

重載、重寫

  • 重寫(override)是一種面向?qū)ο蟮木幊讨仆J侵概缮愔貙懟惖奶摵瘮?shù)掸绞,重寫的函數(shù)必須有一致的參數(shù)表和返回值。
  • 重載(overload)是一種語法規(guī)則耕捞,指編寫一個(gè)與已有函數(shù)同名但是參數(shù)表不同的函數(shù)衔掸。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市俺抽,隨后出現(xiàn)的幾起案子敞映,更是在濱河造成了極大的恐慌昵宇,老刑警劉巖华蜒,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乎芳,死亡現(xiàn)場離奇詭異资盅,居然都是意外死亡癣漆,警方通過查閱死者的電腦和手機(jī)隙疚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門楔脯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喇肋,“玉大人侣颂,你說我怎么就攤上這事档桃。” “怎么了憔晒?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵胳蛮,是天一觀的道長。 經(jīng)常有香客問我丛晌,道長仅炊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任澎蛛,我火速辦了婚禮抚垄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己呆馁,他們只是感情好桐经,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浙滤,像睡著了一般阴挣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纺腊,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天畔咧,我揣著相機(jī)與錄音,去河邊找鬼揖膜。 笑死誓沸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壹粟。 我是一名探鬼主播拜隧,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趁仙!你這毒婦竟也來了洪添?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雀费,失蹤者是張志新(化名)和其女友劉穎干奢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坐儿,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡律胀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了貌矿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炭菌。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逛漫,靈堂內(nèi)的尸體忽然破棺而出黑低,到底是詐尸還是另有隱情,我是刑警寧澤酌毡,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布克握,位于F島的核電站,受9級特大地震影響枷踏,放射性物質(zhì)發(fā)生泄漏菩暗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一旭蠕、第九天 我趴在偏房一處隱蔽的房頂上張望停团。 院中可真熱鬧旷坦,春花似錦、人聲如沸佑稠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舌胶。三九已至捆蜀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幔嫂,已是汗流浹背辆它。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婉烟,地道東北人娩井。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓暇屋,卻偏偏與公主長得像似袁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子咐刨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

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

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,518評論 1 51
  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束昙衅,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 2,782評論 0 3
  • 1. 結(jié)構(gòu)體和共同體的區(qū)別定鸟。 定義: 結(jié)構(gòu)體struct:把不同類型的數(shù)據(jù)組合成一個(gè)整體而涉,自定義類型。共同體uni...
    breakfy閱讀 2,124評論 0 22
  • 一個(gè)博客联予,這個(gè)博客記錄了他讀這本書的筆記啼县,總結(jié)得不錯(cuò)》芯茫《深度探索C++對象模型》筆記匯總 1. C++對象模型與內(nèi)...
    Mr希靈閱讀 5,585評論 0 13
  • 2017.8.25 星期五 晴 昨天老公帶著孩子們回老家了季眷,我們的家長節(jié)校級參演節(jié)目由宮主任、于主...