日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

《深入C++对象模型》笔记

發(fā)布時間:2025/3/17 c/c++ 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《深入C++对象模型》笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

P88

static? data member則放在global data segment中,不會影響class object的大小

但一個template class 的static? data member稍有不同

?

?P96

static? data member如果是從復(fù)雜繼承關(guān)系里繼承而來,或者是virtual base classs的member,程序中該 static? data member還是只有一個實體.而其存取路徑也是直觀的.

?

P98

每一個nonstatic data member的偏移量在編譯期即可知道.

Point3d origin;

?

Point3d *pt = &origin;

?

origin.x=0.0;

pt->x= 0.0;

?

origin.x = 0.0等價于&origin+(&Point3d::x-1)

當Point3d是一個derived class,而其繼承結(jié)果中有一個virtual base class時,而且x是

virtual base class的成員,那么對x的存取效率就有重大差異。因為pt不知道指向哪個對象,只能在運行時才知道。

?

P164

class B1{};

class B2{};

class D : public B1, public B2{};

?B1 *pb1=new D;//使用主虛表

B2 *pb2=new D; //使用次虛表

?

P169

?不要在virtual base class中聲明nonstatic data member

?

?176

virtual function其地址在編譯期是未知的,所以,對virtual member function取地址,得到的是一個索引值。

?

205

如果有需要以值方式傳遞返回一個local class object,那么需要提供一個copy constructor

?

206

-初始化virtual base class constructors(以base class聲明順序)

-初始化 base class,第二個和后續(xù)的base class初始化時,this指針需要調(diào)整

-設(shè)置vptr指向vtbl

-初始化member initialization list中的data member

-如果一個member沒有出現(xiàn)在member initialization list里,但它有一個default contror,那么調(diào)用default contror

?

220

一個class 對于默認的copy assignment operator 在以下情況下不會表現(xiàn)出bitwisecopy:

-當class內(nèi)帶一個member object,而其class有一個copy assignment opt

-當一個class 的base calss有copy assignment opt

-當class聲明了任何virtual functions

-當class繼承自一個virtual base class

?

?224

?

copy assignment operator在虛擬繼承情況下行為不佳,許多編譯器不能得到正確的語義。所以不要讓一個virtual base class有copy操作,所以不要在virtual base class中聲明數(shù)據(jù)。

?

?

230

如果class沒有destructor,那么只有在class內(nèi)帶的member object有destructor時,編譯器才會合成出一個destructor。

?

235

?

?-開始執(zhí)行class 的destructor

-如果class有member class object,而后者有destructor ,那么他們會以聲明相反的順序被調(diào)用。

-如果object內(nèi)帶vptr,則被重新設(shè)置,指向適當?shù)腷ase class的vtbl

-執(zhí)行nonvirtual base class的destructor

-執(zhí)行virtual base class的destructor

?

268

T c= a+b;不產(chǎn)生臨時變量

?

T c; c= a+b;產(chǎn)生臨時變量

?

?

?

?

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/yaoyansi/articles/2506118.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的《深入C++对象模型》笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。