Posted on 2008-11-05 23:59
Batiliu 閱讀(576)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
讀書筆記
第十四條 對(duì)象初始化順序
當(dāng)創(chuàng)建一個(gè)類類型的C++對(duì)象時(shí),其初始化順序是?
下面這組規(guī)則是遞歸描述的:
- 最上層派生類的構(gòu)造函數(shù)負(fù)責(zé)調(diào)用虛基類子對(duì)象的構(gòu)造函數(shù)。所有虛基類子對(duì)象會(huì)按照深度優(yōu)先、從左到右的順序進(jìn)行初始化。
- 直接基類子對(duì)象按照它們?cè)陬惗x中聲明的順序被一一構(gòu)造起來。
- (非靜態(tài))成員子對(duì)象按照它們?cè)陬惗x體中聲明的順序被一一構(gòu)造起來。
- 最上層派生類的構(gòu)造函數(shù)體被執(zhí)行。
第十五條 訪問權(quán)限
第十六條 私有
- private成員的名字只對(duì)其所屬類的其他成員或友元來說是可訪問的,而這里的其他成員也包括成員模板的任何顯示特化。不過如果某段代碼具有對(duì)某個(gè)成員的訪問權(quán),該段代碼就可以通過泄漏該成員的指針方式將其訪問權(quán)限授予外界的任何代碼。
- private成員對(duì)于任何能夠看到其所屬類定義的代碼來說都是可見的。這意味著它的函數(shù)參數(shù)的類型必須事先聲明,另外它還會(huì)參與名字查找和重載決議,因而可能會(huì)使調(diào)用變得無效或具有二義性。
第十七條 封裝
第十八條 虛擬
第十九條 對(duì)派生類施加規(guī)則
為了阻止編譯器為派生類隱式生成默認(rèn)構(gòu)造函數(shù)、復(fù)制構(gòu)造函數(shù)或者復(fù)制復(fù)制操作符,最簡單的、最佳的選擇是將基類中相應(yīng)的函數(shù)“藏”在非公用區(qū)段(或者干脆讓它消失,例如默認(rèn)構(gòu)造函數(shù))。
第二十條 第二十一條 內(nèi)存中的容器
內(nèi)存管理的層次:
每種容器都會(huì)選擇不同的空間/性能平衡點(diǎn)。效率方面,使用vector和set可以做到O(logN)時(shí)間復(fù)雜度的搜索;使用vector做到隨機(jī)的元素訪問;使用list來高效地地插入元素等等。
第二十二條 第二十三條 new操作
C++標(biāo)準(zhǔn)中提供了哪三種形式的new?
// 標(biāo)準(zhǔn)提供的operator new重載
// 最常用的簡單new,用法:new T
void* ::operator new(std::size_t size) throw(std::bad_alloc);
// nothrow new,用法:new (std::nothrow) T
void* ::operator new(std::size_t size, const std::nothrow_t&) throw();
// 定位new,用法:new (ptr) T
void* ::operator new(std::size_t size, void* ptr) throw();
第二十四條 常量
第二十五條 內(nèi)聯(lián)