亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

深度探索C++對象模型(4)

2019-11-17 05:07:15
字體:
來源:轉載
供稿:網友
  雷神跌跌撞撞的讀完了《深度探索C++對象模型》的第一章,雖然還是有些迷惑,但是已經感到收獲很大。按照朋友的說法,第一章是一個概括的介紹,具體的細節會在以后的章節闡述,假如沒有通讀本書,第一章還是比較不輕易理解的。
雷神聽過之后信心倍增,也不在有初看此書時的“世界末日”的感覺了(在第2篇雷神感到學了近一年的C++,居然水平如此之差),并且通過自己的努力,還是摸到了些門道,所以讓我們繼續快樂的出發,踏上深度探索C++對象模型的旅程。記住我們在第一篇的小文《堅持不懈,直到成功》,這可是獲得成功的不二法門。

  第二章主要講的的構造函數語意(Semantics),這是一個什么意思?我的英文和中文學的都不好,但我想是書上弄錯了(也許只是一個筆誤),也許應該翻譯成語義比較恰當。The study or science of meaning in anguage forms. 語義學以語言形式表示意思的研究或科學。我們要研究構造函數的,并且以語言的形式將它描述清楚。   看完題目我的第一個感覺,構造函數我知道。構造函數是一個類的成員函數,構造函數和析構函數是進行對象數據的創建,初始化,清除工作的成員函數,可以重載構造函數,使一個類不止具備一個構造函數,因有時需要以這些方法中的某一種分別創建不同的對象。不能重載析構函數。構造函數作為成員函數和類有相同的名字。例:一個類名為:aClass,構造函數就是aClass()。構造函數沒有返回值,而且不能定義其返回類型,void也不行。析構函數同樣使用這一點。當編寫重載函數時,只有參數表不同,通過比較其參數個數或參數類型可以區分兩個重載函數。但是我讀完第一小段后就知道這一章要告訴我們什么了。

  這一章并不是要告訴我們什么是構造函數,它的作用是什么。而是要告訴我們的是構造函數是如何工作的。我的。在得知這點后我很興奮,因為我確實不知道構造函數是如何構造一個類的對象的,并且一直想知道。我一直對面向對象神奇的功能很感愛好。為什么一個類在被實例化時,可以自動的完成很多工作,使我們的主函數清楚,簡單,穩健,高效。以前只看到了表面,沒有深入,這會我們有機會去皮剔肉深入骨髓了。 書上主要討論了幾種情況:

  帶有缺省構造函數的成員對象。假如一個類沒有任何的構造函數,但他有一個成員對象,這個對象的類有一個缺省的構造函數,那么編譯器會在需要的時候為這個類合成一個構造函數。

  舉個例子:

  我們有以下幾個類。它們都有一個構造函數。
貓{public:貓(),......};
狗{public:狗(),......};
鳥{public:鳥(),......};
魚{public:魚(),......};  我們又有一個類。寵物,我們將貓作為它的成員之一。并且沒有給它聲明構造函數。
寵物{
public:
貓 一只貓;
狗 一只狗;
鳥 一只鳥;
魚 一只魚;
PRivate:
int ival;
......
}  則當需要的時候編譯器會為它合成一個構造函數,并且采用內聯方式。大概象下面的樣子。
inline
寵物::寵物()
{
貓.貓::貓();
狗.狗::狗();
鳥.鳥::鳥();
魚.魚::魚();
ival=0;
}  為什么會這樣,我們來看看編譯器的行動。編譯器開始執行用戶的代碼,預備生成寵物對象之前,會首先調用必要的構造函數,來初始化類的成員,以便為對象分配合適的內存空間。結果編譯器會合成上面的構造函數,假如程序員為寵物類寫了一個構造函數。 寵物::寵物(){ival=0;}那編譯器也會將這個構造函數擴張成上面的那樣。編譯器是怎樣實現的呢?原來當一個類沒有任何用戶定義的構造函數,而是由編譯器自動生成的話,則這個被暗中生成的構造函數將會是一個沒有什么用處的構造函數。但是通過編譯器的工作能夠為我們合成一個nontrivial default constrUCtor.

  好象香港電影中演的,假如你惹上官司(你要設計一個類),你又沒有錢去請高級的律師(沒有給出構造函數),那會給你分配一個律師(缺省的構造函數),當然這個律師的能力也許和那些大律師比起來有差距(trivial)。不過我們要知道他們也不是一點用都沒有。但是由于有律師行的督導,可以使這些律師能夠努力做到最好(nontrivial)?! ⊥瑯拥牡览?,我們可以理解另外的幾種nontrivial default constructor的情況。

  假如你的類沒有任何的構造函數,并且它派生于一個有著缺省構造函數的基類,那這個派生類的缺省構造函數會被視為nontrivial,因此需要被合成出來,他的合成步驟是調用上一層基類的缺省構造函數,并根據它們的聲明次序為派生類合成一個構造函數?! 〖偃珙惵暶骰蚶^續了一個虛函數,或者類派生于一個繼續串鏈,其中有一個或更多的虛擬基類。由于缺少使用者聲明的構造函數,則編譯器會合成一個缺省的構造函數,以便正確的初始化每一個類對象的vptr?! ∽詈笳f一點,在合成的缺省構造函數中,只有基類的子對象和類的成員對象會被初始化,所有其他的非靜態數據成員都不會被初始化,因為這些操作是需要程序員來做的。編譯器沒有必要連這些工作都做了。 好了,這篇就寫到這里吧。這本書真的是雷神所看過的書中,看的最慢的一本了。但這些深層的知識有必要了解的很清楚嗎,我們不知道編譯器如何合成缺省的構造函數不也能寫程序嗎?雷神用侯大師的話往返答這個問題:練從難處練,用從易處用。
知其然而不知其所以然,不是一個嚴謹的學習態度。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产一区二区| 国产精品日韩一区| 国产精品一区二区三区久久| 成人久久久久久久| 欧美日韩不卡合集视频| 在线观看91久久久久久| 欧美怡春院一区二区三区| 国产精品美女视频网站| 国产做受69高潮| 国内精品久久久久影院优| 精品日韩美女的视频高清| 不卡毛片在线看| 欧美成人精品h版在线观看| 欧美日韩一区二区免费视频| 亚洲第一精品夜夜躁人人爽| 久久天天躁狠狠躁老女人| 国产欧美精品一区二区三区-老狼| 最近2019年手机中文字幕| 亚洲男人天堂久| 亚洲男人的天堂在线播放| 国产成人在线亚洲欧美| 国产精品福利小视频| 久久久午夜视频| 色婷婷久久一区二区| 亚洲欧美中文日韩v在线观看| 欧美在线一级va免费观看| 欧美色道久久88综合亚洲精品| 国内精品一区二区三区四区| 青青草99啪国产免费| 国产精品高精视频免费| 国产精品视频不卡| 日韩中文娱乐网| 日韩欧美福利视频| 日韩中文字幕不卡视频| 国产成人精品日本亚洲| 欧美国产极速在线| 亚洲最大激情中文字幕| 亚洲情综合五月天| 97视频在线观看网址| 日本高清不卡在线| 国产精品成人av在线| 欧美性猛交xxxx乱大交| 亚洲精品wwwww| 国产精品白丝jk喷水视频一区| 91精品国产色综合久久不卡98| 欧美国产精品日韩| 欧美激情国内偷拍| 中文字幕亚洲国产| 久久av红桃一区二区小说| 在线看国产精品| 国产一区二区成人| 亚洲成人网av| 国产欧美在线视频| 在线中文字幕日韩| 亚洲第一精品福利| 中国人与牲禽动交精品| 69**夜色精品国产69乱| 日本精品视频网站| 久久久久久久av| 亚洲一区二区中文| 国产精品成人免费电影| 成人羞羞国产免费| 日韩在线视频一区| 亚洲欧美精品中文字幕在线| 国产一区二区三区在线播放免费观看| 日韩欧美国产一区二区| 成人黄色免费网站在线观看| 日韩av影视综合网| 国产噜噜噜噜噜久久久久久久久| 欧美日韩一区二区在线| 亚洲欧美制服另类日韩| 日韩电影视频免费| 欧美性视频网站| 亚洲免费av网址| 欧美精品www| 91精品国产免费久久久久久| 色小说视频一区| 亚洲成人性视频| 欧美激情乱人伦一区| 欧美美女操人视频| 亚洲国产精品女人久久久| 影音先锋欧美精品| 最近日韩中文字幕中文| 91牛牛免费视频| 亚洲视频在线免费看| 亚洲桃花岛网站| 精品二区三区线观看| 成人亚洲欧美一区二区三区| 欧美激情小视频| 日本亚洲欧美三级| 亚洲人成77777在线观看网| 亚洲伊人久久综合| 欧美视频精品一区| 亚州国产精品久久久| 按摩亚洲人久久| 欧美日韩亚洲精品一区二区三区| 久久国产精品久久久久久| 成人深夜直播免费观看| 亚洲欧美精品在线| 久久免费精品视频| 欧美激情va永久在线播放| 日韩在线中文视频| 日韩av电影免费观看高清| 久久精品2019中文字幕| 精品无人区太爽高潮在线播放| 亚洲欧美色图片| 在线精品国产成人综合| 97人人爽人人喊人人模波多| 欧美日韩中文字幕| 俺也去精品视频在线观看| 538国产精品一区二区免费视频| 欧美电影在线观看完整版| 中文字幕在线视频日韩| 亚洲欧美日韩在线高清直播| 一区二区三区 在线观看视| 91色中文字幕| 亚洲一区中文字幕| 中文字幕亚洲欧美日韩在线不卡| 欧美色视频日本版| 欧美性猛交xxxx富婆弯腰| 亚洲欧洲在线观看| 日韩欧美亚洲范冰冰与中字| 欧美黑人国产人伦爽爽爽| 永久免费看mv网站入口亚洲| 久久躁狠狠躁夜夜爽| 一区二区三区动漫| 亚洲人a成www在线影院| 久久国产天堂福利天堂| 黑人与娇小精品av专区| 欧美大全免费观看电视剧大泉洋| 久久久久久国产精品三级玉女聊斋| 国产精品对白刺激| 国产精品美女主播在线观看纯欲| 精品国产乱码久久久久久虫虫漫画| 成人久久久久爱| 亚洲综合在线小说| 日本成人在线视频网址| 亚洲一级一级97网| 精品国内产的精品视频在线观看| 国产一区二区视频在线观看| 久久久久久九九九| 久久99久久99精品中文字幕| 91精品91久久久久久| 国产精品久久久久免费a∨大胸| 久久精品影视伊人网| 国产精品极品美女粉嫩高清在线| 欧美插天视频在线播放| 欧美日韩国产综合新一区| 亚洲第一区在线观看| 日韩专区在线观看| 日韩中文字幕在线| 亚洲成人网在线| 亚洲精品少妇网址| 最新国产精品拍自在线播放| 国产精品美女www| 成人有码视频在线播放| 亚洲欧美国产制服动漫| 亚洲成人精品久久久| 91青草视频久久| 日本亚洲欧美三级| 亚洲第一页中文字幕| 成人精品在线观看| 国产精品男人的天堂| 影音先锋日韩有码|