effective C++ 读后笔记
首先不得不說(shuō)侯捷翻譯的書大部分我都很喜歡,因?yàn)楹罱荼旧硎且幻錾腃++技術(shù)專家。這本書講的是C++如何高效的運(yùn)行,我想要成為一名卓越的開(kāi)發(fā)人員,代碼的高效性是必不可少的。很多人的代碼質(zhì)量很差,即使能夠勉強(qiáng)運(yùn)行在以后的維護(hù)和重新編碼中存在著巨大的問(wèn)題,甚至是日后的運(yùn)行投入中會(huì)遇到致命的錯(cuò)誤。
條款01:視C++為一個(gè)語(yǔ)言聯(lián)邦而不是單一一門語(yǔ)言:其可以分為如下幾種語(yǔ)言 C、 Object—Oriented C++(封裝、繼承、多態(tài)、虛函數(shù))、Template C++(泛型編程)、STL。C++的高效編程取決于我們使用C++的哪一部分。
條款02:盡量以const,enum,inline替換#define
條款03:盡可能使用const 它可以在class外部修飾global或namespace作用域中的常量,或修飾文件函數(shù)或者區(qū)塊作用域中被聲明為static的對(duì)象。也可以用它修飾class內(nèi)部的static和non-static成員變量。面對(duì)指針,你也可以指出指針自身、指針?biāo)肝?#xff0c;或兩者都是(或都不是)const,const出現(xiàn)在星號(hào)左邊,則表示被指物是常量,如果const出現(xiàn)在星號(hào)右邊則指針自身是常量。
條款04:確定對(duì)象被使用之前已被初始化 內(nèi)置類型意外的任何其他東西,初始化的責(zé)任都落在構(gòu)造函數(shù)身上:規(guī)則很簡(jiǎn)單,確保每一個(gè)構(gòu)造函數(shù)都將對(duì)象的每一個(gè)成員初始化。構(gòu)造函數(shù)最好使用成員初始列,而不要再構(gòu)造函數(shù)本體內(nèi)使用賦值操作。為免除“跨編譯單元之初始化次序”問(wèn)題,請(qǐng)以local static 代替 non-local static對(duì)象。
條款05:了解C++默默編寫并調(diào)用哪些函數(shù) 就是說(shuō)編譯器自動(dòng)補(bǔ)充了些什么在你只寫了一些簡(jiǎn)單代碼的時(shí)候比如你寫了class XCoderLiu{};
就相當(dāng)于寫了下面這樣的代碼
1 class XCoderLiu{ 2 public: 3 XCoderLiu(){...} 4 XCoderLiu(const XCoderLiu& rhs){...} 5 ~XCoderLiu(){...} 6 XCoderLiu& operator=(const XCoderLiu& rhs){...} 7 };?編譯器可以暗自為class創(chuàng)建default構(gòu)造函數(shù)、copy構(gòu)造函數(shù)、copy assignment操作符,以及析構(gòu)函數(shù)。
條款06:不想使用編譯器自動(dòng)生成的函數(shù)應(yīng)該明確拒絕 為駁回編譯器自動(dòng)提供的機(jī)能,可將相應(yīng)的成員函數(shù)聲明為private并且不予實(shí)現(xiàn)。(貌似編譯器提供的默認(rèn)拷貝函數(shù)總是多多少少存在一些問(wèn)題還是自己寫比較好)
條款07:為多態(tài)基類聲明virtual析構(gòu)函數(shù) 任何class只要帶有virtual函數(shù)幾乎確定應(yīng)該也有一個(gè)virtual析構(gòu)函數(shù)
條款08:別讓異常逃離析構(gòu)函數(shù)?如果某個(gè)操作可能在失敗時(shí)拋出異常,而又存在某種需要必須處理該異常,那么這個(gè)異常必須來(lái)自析構(gòu)函數(shù)意外的某個(gè)函數(shù)。因?yàn)楫?dāng)系統(tǒng)存在兩個(gè)以上的異常時(shí)候會(huì)出現(xiàn)不明確的錯(cuò)誤,析構(gòu)函數(shù)絕對(duì)不能吐出異常
條款09:絕對(duì)不在構(gòu)造和析構(gòu)函數(shù)中調(diào)用virtual函數(shù) 因?yàn)檫@類調(diào)用從不下降至derived class
條款10:令operator = 返回一個(gè)reference to *this (this指針的引用)
條款11:在operator=中處理“自我賦值” ?if(this == &rhs) return *this;?
條款12:復(fù)制對(duì)象時(shí)勿忘其每一個(gè)成分 當(dāng)你自己聲明拷貝函數(shù)時(shí)編譯器似乎被冒犯一樣當(dāng)你的實(shí)現(xiàn)代碼幾乎必然出錯(cuò)的時(shí)候卻不告訴你。另外不要嘗試在一個(gè)拷貝函數(shù)中實(shí)現(xiàn)另一個(gè)拷貝函數(shù),應(yīng)該將共同機(jī)能放進(jìn)第三個(gè)函數(shù)中,并由兩個(gè)拷貝函數(shù)共同調(diào)用。
條款13:以對(duì)象管理資源,在拷貝構(gòu)造函數(shù)或者拷貝分配操作符復(fù)制它們,他們會(huì)變成null,而復(fù)制所得的指針將取得資源的唯一擁有權(quán)。
條款14:在資源管理類中小心coping行為 資源取得時(shí)機(jī)便是初始化時(shí)機(jī)
條款15: 在資源管理類中提供該對(duì)原始資源的訪問(wèn) 對(duì)原始資源的訪問(wèn)可能經(jīng)由顯示轉(zhuǎn)換和隱式轉(zhuǎn)換 一般而言顯式轉(zhuǎn)換比較安全 但是隱式轉(zhuǎn)換對(duì)客戶筆記哦啊方便。
條款16:成對(duì)地使用new和delete時(shí)要采用相同形式?
條款17:以獨(dú)立語(yǔ)句將newed對(duì)象置于智能指針 如果不這樣做 一旦異常被拋出 有可能導(dǎo)致難以察覺(jué)的錯(cuò)誤
條款18:
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/XCoderLiu/p/3532324.html
總結(jié)
以上是生活随笔為你收集整理的effective C++ 读后笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nodejs + ts 配置
- 下一篇: s3c2440移植MQTT