欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的-創(chuàng)新互聯(lián)

小編給大家分享一下C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)專注于平安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都做商城網(wǎng)站。平安網(wǎng)站建設(shè)公司,為平安等地區(qū)提供建站服務(wù)。全流程定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

虛函數(shù)的內(nèi)存結(jié)構(gòu)虛函數(shù)的內(nèi)存結(jié)構(gòu)

一、 基本概念

    C++中的虛函數(shù)的作用主要是實(shí)現(xiàn)了多態(tài)的機(jī)制。
    關(guān)于多態(tài),簡(jiǎn)而言之就是用父類型別的指針指向其子類的實(shí)例,然后通過父類的指針調(diào)用實(shí)際子類的成員函數(shù)。這種技術(shù)可以讓父類的指針有“多種形態(tài)”,這是一種泛型技術(shù)。
    所謂泛型技術(shù),說白了就是試圖使用不變的代碼來實(shí)現(xiàn)可變的算法。比如:模板技術(shù),RTTI技術(shù),虛函數(shù)技術(shù),要么是試圖做到在編譯時(shí)決議,要么試圖做到運(yùn)行時(shí)決議。

二、 虛函數(shù)的定義與派生類中的重定義

class 類名
{
public:
    virtual 成員函數(shù)說明;
}
 
class 類名:訪問修飾符 基類名
{
public:
    virtual 成員函數(shù)說明;
}

三、 虛函數(shù)在內(nèi)存中的結(jié)構(gòu)

1.我們先看一個(gè)例子

  1. #include <iostream>


  2. using namespace std;


  3. class A

  4. {

  5.     public:

  6.         virtual void fun0() { cout << "A::fun0" << endl; }

  7. };


  8. int main(void)

  9. {

  10.     A a;


  11.     cout << "size
    of A = " << sizeof(a) << endl;


  12.     return 0;

  13. }

 結(jié)果:size of A = 4

2.如果再添加一個(gè)虛函數(shù)
    virtual void fun1() { cout << "A::fun1" << endl; }

    得到相同的結(jié)果。如果去掉函數(shù)前面的virtual修飾符 結(jié)果:size of A = 1

3.在看下面的結(jié)果

  1. #include <iostream>


  2. using namespace std;


  3. class A

  4. {

  5.     public:

  6.         virtual void fun0() { cout << "A::fun0" << endl; }

  7.     int a;

  8.     int b;

  9. };


  10. int main(void)

  11. {

  12.     A a;


  13.     cout << "size
    of A = " << sizeof(a) << endl;


  14.     return 0;

  15. }

結(jié)果:size of A = 12
在 lip32 平臺(tái)下指針在內(nèi)存中占4個(gè)字節(jié),虛函數(shù)在一個(gè)虛函數(shù)表(VTABLE)中保存函數(shù)地址。
C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的

在看下面例子:

  1. #include <iostream>


  2. using namespace std;


  3. class A

  4. {

  5.     public:

  6.         virtual void fun0() { cout << "A::fun0" << endl; }

  7.         virtual void fun1() { cout << "A::fun1" << endl; }

  8. };


  9. int main(void)

  10. {

  11.     A a;


  12.     cout << "size
    of A = " << sizeof(a) << endl;


  13.     return 0;

  14. }

結(jié)果:
size of A = 4 
C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的

4.我們?cè)賮砜纯蠢^承中虛函數(shù)的內(nèi)存結(jié)構(gòu)

先看下面的例子

  1. #include <iostream>


  2. using namespace std;


  3. class A

  4. {

  5.     public:

  6.         virtual void fun0() { cout << "A::fun0" << endl; }

  7. };


  8. class B

  9. {

  10.     public:

  11.         virtual void fun0() { cout << "B::fun0" << endl; }

  12. };


  13. class C

  14. {

  15.     public:

  16.         virtual void fun0() { cout << "C::fun0" << endl; }

  17. };


  18. class D : public A, public B, public C

  19. {};


  20. int main(void)

  21. {

  22.     D d;


  23.     cout << "size
    of D = " << sizeof(d) << endl;


  24.     return 0;

  25. }

結(jié)果:size is = 12
C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的


以上是“C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)題目:C++中虛函數(shù)內(nèi)存結(jié)構(gòu)是怎么樣的-創(chuàng)新互聯(lián)
文章鏈接:http://www.chinadenli.net/article8/dhsdop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航網(wǎng)站排名網(wǎng)站改版網(wǎng)站策劃移動(dòng)網(wǎng)站建設(shè)響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)