www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序喵大人
[導(dǎo)讀]首先聲明一點(diǎn),虛表并非是C語(yǔ)言的官方標(biāo)準(zhǔn)的一部分,只是各家編譯器廠商在實(shí)現(xiàn)多態(tài)時(shí)的解決方案。另外即使同為虛表不同的編譯器對(duì)于虛表的設(shè)計(jì)可能也是不同的,本文主要基于ItaniumCABI(適用于gcc和clang)。從C的POD類(lèi)型到C的類(lèi)首先回顧一下C語(yǔ)言純POD的結(jié)構(gòu)體(str...

首先聲明一點(diǎn),虛表并非是C 語(yǔ)言的官方標(biāo)準(zhǔn)的一部分,只是各家編譯器廠商在實(shí)現(xiàn)多態(tài)時(shí)的解決方案。另外即使同為虛表不同的編譯器對(duì)于虛表的設(shè)計(jì)可能也是不同的,本文主要基于Itanium C ABI(適用于gcc和clang)。

從C的POD類(lèi)型到C 的類(lèi)

首先回顧一下C語(yǔ)言純POD的結(jié)構(gòu)體(struct)。如果用C語(yǔ)言實(shí)現(xiàn)一個(gè)類(lèi)似面向?qū)ο蟮念?lèi),應(yīng)該怎么做呢?

寫(xiě)法一

#include?
typedef?struct?Actress?{
????int?height;?//?身高
????int?weight;?//?體重
????int?age;????//?年齡(注意,這不是數(shù)據(jù)庫(kù),不必一定存儲(chǔ)生日)

????void?(*desc)(struct?Actress*);
}?Actress;

//?obj中各個(gè)字段的值不一定被初始化過(guò),
//?通常還會(huì)在類(lèi)內(nèi)定義一個(gè)類(lèi)似構(gòu)造函數(shù)的函數(shù)指針,這里簡(jiǎn)化
void?profile(Actress*?obj)?{
????printf("height:%d?weight:%d?age:%d\n",?obj->height,?obj->weight,?obj->age);
}

int?main()?{
????Actress?a;
????a.height?=?168;
????a.weight?=?50;
????a.age?=?20;
????a.desc?=?profile;

????a.desc(
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉