freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設(shè)計(jì)教程:第9章-多態(tài)性和虛(編輯修改稿)

2024-10-22 16:15 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 配 4個(gè)字節(jié)。如果有 double型的數(shù)據(jù),則要分配 8個(gè)字節(jié)。 【 例 】 是演示這一關(guān)系的程序。 圖 實(shí)函數(shù)和虛函數(shù)的圖解示意圖 從圖中可見(jiàn) , 對(duì)象的起始地址是 vptr。 它指向vtable, vtable為每個(gè)虛函數(shù)建立一個(gè)指針函數(shù) ,如果只是繼承基類(lèi)的虛函數(shù) , 則它們調(diào)用基類(lèi)的虛函數(shù) , 這就是 b和 c的 vtable表中 (*vfunc2)( )項(xiàng)所描述的情況 。 如果派生類(lèi)改寫(xiě)了基類(lèi)的虛函數(shù) ,則調(diào)用自己的虛函數(shù) , 這就是 b和 c的 vtable表中(*vfunc1)( )項(xiàng)所描述的情況 。 實(shí)函數(shù)不是通過(guò)地址調(diào)用 , 用帶底紋的方框表示 , 它們由對(duì)象的名字支配規(guī)律決定 。 【 例 】 是程序?qū)崿F(xiàn) 。 【 例 】 實(shí)函數(shù)和虛函數(shù)調(diào)用過(guò)程。 include iostream using namespace std。 class A{ public: int m_A。 A(int a){m_A=a。} void func1(){coutA::func1( )endl。} void func2(){coutA::func2( )endl。} virtual void vfunc1(){coutA::vfunc1( )endl。} virtual void vfunc2(){coutA::vfunc2( )endl。} }。 class B:public A{ public: int m_B。 B(int a, int b):A(a),m_B(b){} void func1(){coutB::func1( )endl。} void vfunc1(){coutB::vfunc1( )endl。} }。 class C:public B{ public: int m_C。 C(int a, int b, int c):B(a,b),m_C(c){} void func1(){coutC::func1( )endl。} void vfunc1(){coutC::vfunc1( )endl。} }。 void main() { //輸出類(lèi)的長(zhǎng)度 ( 字節(jié)數(shù) ) coutsizeof(A),sizeof(B).sizeof(C)endl。 A a(11)。 B b(21,22)。 C c(31,32,33)。 //輸出類(lèi)的首地址及數(shù)據(jù)成員地址 , 驗(yàn)證首地址是 //vptr地址 coutamp。a,amp。()endl。 coutamp。b,amp。,amp。endl。 coutamp。c,amp。,amp。 , amp。endl。 //使用基類(lèi)指針 A* pa=amp。a。 //pa指向基類(lèi) A pavfunc1()。 //調(diào)用 A::vfunc1( ) pavfunc2()。 //調(diào)用 A::vfunc2( ) pafunc1()。 //調(diào)用 A::func1( ) pafunc2()。 //調(diào)用 A::vfunc2( ) coutendl。 pa=amp。b。 // pa指向派生類(lèi) B pavfunc1()。//調(diào)用 B::vfunc1( ) pavfunc2()。//調(diào)用 A::vfunc2( ) pafunc1()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func1( ) pafunc2()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func2( ) coutendl。 pa=amp。c。 // pa指向派生類(lèi) C pavfunc1()。 //調(diào)用 C::vfunc1( ) pavfunc2()。 //調(diào)用 A::vfunc2( ) pafunc1()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func1( ) pafunc2()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func1( ) coutendl。 //使用類(lèi) B的指針 , 類(lèi) B是類(lèi) C的直接基類(lèi) B* pb=amp。b。 // pb指向基類(lèi) B pbvfunc1()。 //調(diào)用 B::vfunc1( ) pbvfunc2()。 //調(diào)用 A::vfunc2( ) pbfunc1()。 //靜態(tài)聯(lián)編 , 調(diào)用 B::func1() pbfunc2()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func2() coutendl。 pb=amp。c。 // pb指向派生類(lèi) C pbvfunc1()。 //調(diào)用 C::vfunc1() pbvfunc2()。 //調(diào)用 A::vfunc2() pbfunc1()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 B::func1() pbfunc2()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func2() coutendl。 //使用類(lèi) C的指針 C* pc=amp。c。 // pc指向派生類(lèi) C pcvfunc1()。 //調(diào)用 C::vfunc1( ) pcvfunc2()。 //調(diào)用 A::vfunc2( ) pcfunc1()。 //靜態(tài)聯(lián)編 , 調(diào)用 C::func1() pcfunc2()。 //靜態(tài)聯(lián)編 , 只能調(diào)用 A::func2( ) } 對(duì)象 a有一個(gè)整型數(shù)據(jù),應(yīng)分配 4個(gè)字節(jié), vptr也是 4個(gè)字節(jié),總共 8個(gè)字節(jié)。對(duì)象 b和 c依次增加一個(gè)整型數(shù)據(jù)成員,內(nèi)存分配也順增 4個(gè)字節(jié)。輸出結(jié)果如下: 8, 0012FF78,0012FF7C //vptr, m_A 0012FF6C,0012FF70,0012FF74 //vptr, m_A, m_B 0012FF5C,0012FF60,0012FF64,0012FF68 //vptr, m_A, // m_B, m_C // A* pa=amp。a。 A::vfunc1() A::vfunc2() A::func1() A::func2() // pa=amp。b。 B::vfunc1() A::vfunc2() A::func1() A::func2() //pa=amp。c。 C::vfun
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1