偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

概括C++類學(xué)習(xí)總結(jié)

開(kāi)發(fā) 后端
所謂C++類,其實(shí)類是定義同一類所有對(duì)象的變量和方法的藍(lán)圖或原型,其實(shí)類和對(duì)象之間的差別是一些開(kāi)發(fā)人員很頭疼的問(wèn)題。

下面用實(shí)際的案例來(lái)說(shuō)明C++類概念的問(wèn)題,在世界中,經(jīng)常有屬于同一類的對(duì)象,比如,你使用的電腦只是世界上很多電腦中的一臺(tái)而已,面向?qū)ο筌浖?,也有很多共享相同特征的不同的?duì)象。

首先一個(gè)沒(méi)有明顯的含有成員的C++,它的大小不是0,因?yàn)閷?shí)際上它不是空的,它被編譯器安插了一個(gè)char,為的是使這個(gè)C++的兩個(gè)對(duì)象能夠在內(nèi)存中被分配***的地址.至于兩個(gè)派生的C++Y和Z,因?yàn)檎Z(yǔ)言本身造成的負(fù)擔(dān),還有編譯器對(duì)于特殊情況進(jìn)行的優(yōu)化處理,再有Alignment的限制,因此結(jié)果變成了8.這個(gè)8是怎么組成的?

  1. typedef int length; //zai   
  2. class point3d   
  3. {   
  4. public:   
  5. //length被決議成global typedef 也就是int   
  6. //_val被決議成Point3d::_val   
  7. void mumble(length val){_val=val;}   
  8. length mumble(){return _val;}   
  9. //……   
  10. private:   
  11. //length必須在這個(gè)class對(duì)它的***個(gè)參考操作之前被看見(jiàn)   
  12. //這樣聲明將使先前的參考操作不合法   
  13. typedef float length;   
  14. length _val;   
  15. //……  

不過(guò)需要注意的是不同的編譯器Y和Z大小的結(jié)果也會(huì)不同.因?yàn)樾碌木幾g器會(huì)將一個(gè)空的virtual base class看做是派生對(duì)象的開(kāi)頭部分,因此派生有了member,因此也就不必分配char的那一個(gè)bytes.也就用不到填補(bǔ)的3個(gè)bytes,因此有可能在某些編譯器中

  1. Point3d   
  2. Point3d::translate(const Point3d &pt)   
  3. {   
  4. x+=pt.x;   
  5. y+=pt.y;   
  6. z+=pt.z;   
  7. }  

雷神1、4、8……的說(shuō)了一堆,也不知大家明白與否,但是這第三章,讀起來(lái)確實(shí)比前兩章順多了。我們繼續(xù)我們來(lái)看Data Member 的Binding,現(xiàn)在我們對(duì)數(shù)據(jù)成員的綁定只需要記住一個(gè)防御性風(fēng)格:始終把嵌套型的聲明放在class的開(kāi)始部分,這樣做可以確保非直覺(jué)綁定的正確性。看下面的一個(gè)例子:

  1. class X{};   
  2. class Y:public virtual class X{};   
  3. class Z:public virtual class X{};   
  4. class A:public Y,public Z{};  

怎么成了抄書(shū)了,雷神也不知不覺(jué),可能是在這章的理解上比較容易些吧,不用去想個(gè)看的見(jiàn)摸的著的東西比劃。好象小朋友學(xué)算術(shù)。一位數(shù)的計(jì)算不用掰手指頭,可是兩位數(shù)或者三位數(shù)的計(jì)算,手指頭加上腳指頭還是不夠。學(xué)習(xí)就是這么回事。理解力和抽象能力很重要。回來(lái)繼續(xù)學(xué)習(xí)。

通過(guò)這一章我還知道了。數(shù)據(jù)成員的布局。數(shù)據(jù)成員的存取。并且對(duì)Static data members有了進(jìn)一步的了解,在class的生命周期中,靜態(tài)成員被看作是全局變量,每一個(gè)member的存取不會(huì)導(dǎo)致任何空間或效率上的額外負(fù)擔(dān)。不論是從一個(gè)復(fù)雜的繼承關(guān)系中繼承還是直接聲明的。

Static data member都只會(huì)有一個(gè)實(shí)體。并且有著非常直接的存取路徑。另外如果兩個(gè)C++都聲明了一個(gè)相同名字的靜態(tài)成員變量,那么編譯器會(huì)通過(guò)一種算法,為我們解決名字沖突的問(wèn)題。而非靜態(tài)的成員變量的存去實(shí)際上是通過(guò)implicit class object(this指針)來(lái)完成的。

【編輯推薦】

  1. CC++中標(biāo)準(zhǔn)輸入實(shí)現(xiàn)方式上的一點(diǎn)區(qū)別
  2. C++編譯器如何對(duì)Const常量進(jìn)行分配存儲(chǔ)空間
  3. C++庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
  4. 玩轉(zhuǎn)C++語(yǔ)言的幾種方法
  5. 如何更好的進(jìn)行C++代碼編制
責(zé)任編輯:chenqingxiang 來(lái)源: NET130
相關(guān)推薦

2010-01-28 17:10:33

C++

2010-01-18 16:17:53

C++代碼

2010-01-18 10:53:26

2010-01-21 18:00:59

C++語(yǔ)言

2011-04-19 17:36:12

C++

2011-04-19 17:44:02

C++

2010-01-14 17:02:10

學(xué)習(xí)C++

2010-01-11 14:05:01

C++學(xué)習(xí)方法

2010-01-25 18:05:40

C++語(yǔ)言

2010-01-27 16:52:31

C++語(yǔ)言學(xué)習(xí)

2010-01-26 17:53:05

C++入門(mén)學(xué)習(xí)

2010-01-14 09:43:26

C++標(biāo)準(zhǔn)程序庫(kù)

2009-09-16 10:27:35

LINQ Custom

2010-01-15 14:59:54

C++標(biāo)準(zhǔn)程序庫(kù)

2010-01-22 16:35:41

C++開(kāi)發(fā)

2010-01-25 11:21:01

C++語(yǔ)法

2010-01-26 17:11:13

C++編程

2010-01-13 11:10:17

C++庫(kù)函數(shù)

2009-11-09 10:43:51

WCF Web編程模型

2010-01-21 13:33:44

C++基類
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)