GeekBand C++面向?qū)ο蟾呒?jí)編程(下) 第一周學(xué)習(xí)筆記

本周學(xué)習(xí)內(nèi)容回顧

轉(zhuǎn)換函數(shù)

conversion function

non-explicit-one-argument ctor

兩者都用于實(shí)現(xiàn)對(duì)象類型轉(zhuǎn)換

當(dāng)conversion function和non-explicit-one-argument ctor同時(shí)存在時(shí)會(huì)引發(fā)ambiguous調(diào)用錯(cuò)誤

而顯示的explicit-one-argument cotr與conversion function共存時(shí)需要顯式調(diào)用構(gòu)造函數(shù)之后才可以得到期望的結(jié)果

pointer-like class

智能指針

智能指針是一個(gè)模板類嘁捷,內(nèi)含一根真正的指針

智能指針重載operator*()和operator->()

對(duì)于*運(yùn)算符運(yùn)算會(huì)消耗掉*

對(duì)于->運(yùn)算符運(yùn)算會(huì)將結(jié)果繼續(xù)加上->

迭代器

list<Foo>::iterator ite;

*ite獲得一個(gè) Foo object

ite->method;意思是調(diào)用Foo::method()

相當(dāng)于(*ite).method();

相當(dāng)于(&(*ite))->method();

function-like class

functor

標(biāo)準(zhǔn)庫(kù)中仿函數(shù)使用一個(gè)奇特的base_class

namespace

不同命名空間互相獨(dú)立

用于解決不同部門或者不同個(gè)人之間防止出現(xiàn)函數(shù)重名或者全局變量重名所造成的二義性問題

class template,類模板

function template 函數(shù)模板

member template 成員模板

specialization 模板特化

partial specialization 模板偏特化

個(gè)數(shù)的偏特化

范圍的偏特化

template template parameter 模板模板參數(shù)

關(guān)于C++標(biāo)準(zhǔn)庫(kù)

由仿函數(shù)functors形成算法庫(kù)algorithm

容器container通過迭代器iterator調(diào)用algorithm中的方法實(shí)現(xiàn)各種運(yùn)算

C++11的三個(gè)新特性介紹

varadic templates

數(shù)量不定的模板參數(shù)

關(guān)鍵字...就是一個(gè)所謂的pack(包)

在varadic tempaltes中 sizeof...(args)獲得參數(shù)的個(gè)數(shù)

auto

兩種不可應(yīng)用auto關(guān)鍵字的情況:

1.coder本身對(duì)變量類型并不明確

2.直接用auto聲明一個(gè)變量但是并沒有賦值或者初始化的過程

ranged-base for loop

語法:for(decl: coll) {statement;}


通過值傳遞?

for(auto elem: vec) { ...;}

按引用傳遞

for(auto& elem: vec) {...;}

關(guān)于reference的理解

object和其reference大小相同跨蟹,地址相同(當(dāng)然這是假象)现使,另java語言中所有的變量都是reference

基于這個(gè)假象弦赖,所以reference與object相比在被調(diào)用端的寫法和調(diào)用端的接口均相同

因此reference通常不用于聲明變量,而是用于參數(shù)類型和返回值類型的描述

函數(shù)簽名包括 函數(shù)名、參數(shù)表斋日、以及()后面有可能存在的const關(guān)鍵字

復(fù)合&繼承關(guān)系下的構(gòu)造和析構(gòu)

構(gòu)造:

先調(diào)用基類的默認(rèn)構(gòu)造函數(shù)

然后調(diào)用component的默認(rèn)構(gòu)造函數(shù)

最后執(zhí)行自身的構(gòu)造

析構(gòu):

先析構(gòu)自身

然后析構(gòu)component

最后析構(gòu)基類


關(guān)于作業(yè)的思考


VS2008編譯器x64環(huán)境下的對(duì)象模型

Fruit對(duì)象的size32字節(jié)Apple對(duì)象的size40字節(jié)

編譯器將空類size1字節(jié)只含有非虛函數(shù)的類size1字節(jié)

含有虛函數(shù)不含數(shù)據(jù)的類大小為8字節(jié)

vptrsize為8字節(jié)

對(duì)象初始地址為71FCE8

int?no首地址為71FCF0

相對(duì)對(duì)象初始地址偏移量為8字節(jié)

vptr的size為8字節(jié)饰恕,占位8字節(jié)

double?weight首地址為71FCF8

相對(duì)no首地址偏移量為8字節(jié)

相對(duì)對(duì)象初始地址偏移量為16字節(jié)

int型變量size為4字節(jié)挠羔,但是計(jì)算得占位8字節(jié),故而填充量為4字節(jié)

char?key首地址為71FD00

相對(duì)weight首地址偏移量為8字節(jié)

相對(duì)對(duì)象初始地址偏移量為24字節(jié)

對(duì)象總size為32字節(jié)

double型變量size為8字節(jié)埋嵌,占位8字節(jié)

char型變量size為1字節(jié)

key首地址到Fruit結(jié)束之間的內(nèi)存空間為8字節(jié)破加,故而填充量為7字節(jié)

Apple對(duì)象size40字節(jié),基類Fruit對(duì)象為32字節(jié)

由基類繼承而來的數(shù)據(jù)等同基類對(duì)象模型

Apple類自身首地址為71FD28

int?size首地址為71FD48

intsize相對(duì)Apple對(duì)象首地址偏移量為32字節(jié)雹嗦,等于基類Fruit所占內(nèi)存空間大小

char?types首地址為71FD4C

相對(duì)size首地址偏移量為4字節(jié)范舀,等于intsize所占的內(nèi)存空間大小

chartypes首地址相對(duì)Apple對(duì)象首地址偏移量為36字節(jié)合是,Apple大小為40字節(jié),計(jì)算得types占位4字節(jié)锭环,故而填充量為3字節(jié)



VS2008編譯器Win32環(huán)境下的對(duì)象模型

Fruit對(duì)象的size32字節(jié)Apple對(duì)象的size40字節(jié)

編譯器將空類size1字節(jié)只含有非虛函數(shù)的類size1字節(jié)

含有虛函數(shù)不含數(shù)據(jù)的類大小為4字節(jié)

vptrsize為4字節(jié)

對(duì)象初始地址為8FFC38

int?no首地址為8FFC40

相對(duì)對(duì)象初始地址偏移量為8字節(jié)

vptr的size為4字節(jié)聪全,占位8字節(jié),故而填充量為4字節(jié)

double?weight首地址為8FFC48

相對(duì)no首地址偏移量為8字節(jié)

相對(duì)對(duì)象初始地址偏移量為16字節(jié)

int型變量size為4字節(jié)辅辩,但是計(jì)算得占位8字節(jié)难礼,故而填充量為4字節(jié)

char?key首地址為8FFC50

相對(duì)weight首地址偏移量為8字節(jié)

相對(duì)對(duì)象初始地址偏移量為24字節(jié)

對(duì)象總size為32字節(jié)

double型變量size為8字節(jié),占位8字節(jié)

char型變量size為1字節(jié)

key首地址到Fruit結(jié)束之間的內(nèi)存空間為8字節(jié)玫锋,故而填充量為7字節(jié)

Apple對(duì)象size40字節(jié)蛾茉,基類Fruit對(duì)象為32字節(jié)

由基類繼承而來的數(shù)據(jù)等同基類對(duì)象模型

Apple類自身首地址為8FFC08

int?size首地址為8FFC28

intsize相對(duì)Apple對(duì)象首地址偏移量為32字節(jié),等于基類Fruit所占內(nèi)存空間大小

char?types首地址為8FFC2C

相對(duì)size首地址偏移量為4字節(jié)景醇,等于intsize所占的內(nèi)存空間大小

chartypes首地址相對(duì)Apple對(duì)象首地址偏移量為36字節(jié)臀稚,Apple大小為40字節(jié),計(jì)算得types占位4字節(jié)三痰,故而填充量為3字節(jié)


相同代碼在GCC編譯器win32環(huán)境下執(zhí)行的結(jié)果如下

對(duì)于Fruit的對(duì)象模型

vptr大小為4字節(jié)

vptr到int no之間沒有填充

最后的char key 占1字節(jié)后被填充至8字節(jié)

對(duì)于Apple的對(duì)象模型

基類的char key本身占據(jù)1字節(jié)然后填充至8字節(jié)

但是衍生類的int size從char key偏移量4字節(jié)位置即開始填充

衍生類的char types占據(jù)1字節(jié)然后又重新填充至8字節(jié)


可能的原因是在GCC下衍生類的對(duì)象模型會(huì)占據(jù)一部分基類本身的填充空間吧寺?

表示不是很明白...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市散劫,隨后出現(xiàn)的幾起案子稚机,更是在濱河造成了極大的恐慌,老刑警劉巖获搏,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赖条,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡常熙,警方通過查閱死者的電腦和手機(jī)纬乍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裸卫,“玉大人仿贬,你說我怎么就攤上這事∧够撸” “怎么了茧泪?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)聋袋。 經(jīng)常有香客問我队伟,道長(zhǎng),這世上最難降的妖魔是什么幽勒? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任嗜侮,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锈颗。我一直安慰自己缠借,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布宜猜。 她就那樣靜靜地躺著,像睡著了一般硝逢。 火紅的嫁衣襯著肌膚如雪姨拥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天渠鸽,我揣著相機(jī)與錄音叫乌,去河邊找鬼。 笑死徽缚,一個(gè)胖子當(dāng)著我的面吹牛憨奸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凿试,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼排宰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了那婉?” 一聲冷哼從身側(cè)響起板甘,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎详炬,沒想到半個(gè)月后盐类,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呛谜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年在跳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隐岛。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猫妙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出礼仗,到底是詐尸還是另有隱情吐咳,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布元践,位于F島的核電站韭脊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏单旁。R本人自食惡果不足惜沪羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔫饰,春花似錦琅豆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杖剪,卻和暖如春冻押,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盛嘿。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工洛巢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人次兆。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓稿茉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親芥炭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漓库,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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