欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: C++中繼承內(nèi)存分配 [打印本頁]

作者: 51hei單片    時(shí)間: 2016-3-13 17:21
標(biāo)題: C++中繼承內(nèi)存分配
如有錯(cuò)誤,歡迎指正,謝謝!!!!
一、沒有虛函數(shù),沒有繼承的類內(nèi)存結(jié)構(gòu):
     1.如下定義一個(gè)類:
     class A
     {
      public:
          void seta(int x) {a = x;};
          void setb(int x) {b = x;};
          int  sum() {return a+b;};
      private:
         int a;
         int b;
     };

二、沒有虛函數(shù),有繼承的類內(nèi)存結(jié)構(gòu):
  class A

   public:
    void seta(int x){a = x;};
   privated:
    int a;
  };

  class B:class A
  {
  public:
   void setb(int x){b = x;};
   privated:
    int b;
  };
在這樣的實(shí)例中,先分配父類變量,再分配子類變量。
如果是多重繼承的話,則按順序分配父類的變量。

三、有虛函數(shù),沒有繼承的類內(nèi)存結(jié)構(gòu):
若果類中含有虛函數(shù)時(shí),類對(duì)象的內(nèi)存分配有不一樣的地方。如:
  class A
  {
   public:
    virtual init(int x,int y){a = x;b = y;};
    virtual init(){a = 0;b=0;};
    int sum();
   priviate:
    int a,b;
  }
此時(shí),在類實(shí)例內(nèi)存中,首先是虛函數(shù)表指針,然后才分配變量。

四、有虛函數(shù),單繼承的類內(nèi)存結(jié)構(gòu):
單繼承關(guān)系分為虛函數(shù)覆蓋和不覆蓋兩種,當(dāng)不覆蓋時(shí),虛函數(shù)表先是父類的虛
函數(shù)表,然后是子類的虛函數(shù)表,當(dāng)覆蓋時(shí),同樣排序,但父類的被覆蓋虛函數(shù)
地址為子類的相應(yīng)的虛函數(shù)的地址。變量的分配和上面的相同。

五、有虛函數(shù),多繼承的類內(nèi)存結(jié)構(gòu):
class C
{
public:
  virtual C1(){return 1;};
  virtual C2(){return 2;};
  setc(int x){c = x;};
private:
  int c;
};
class B
{
public:
  virtual B1(){d1=1;};
  virtual B2(){d2=2;};
private:
  int d1;
  int d2;
};

class A
{
public:  
  int sum(){return a1+a2;};
  virtual  A1(int x,int y){a1 = x;a2 = y;};
  virtual  A2(){a3=0;};
  virtual  A3(int x){a3 = x;};
  virtual  A4(){a1*a2*a3;};
private:
  int a1;
  int a2;
  int a3;
};
class D:public A,public B,public C
{
public:
  virtual D1(int x,int y){d1=x+10;d2=y+10;d3=d1*5;d4=d2*7;};
  virtual D2(){return 8;};
private:
  int d1,d2,d3,d4;  
};

此時(shí),類D 的實(shí)例的內(nèi)存分配應(yīng)該如下:
A的虛函數(shù)表指針,緊跟這個(gè)虛函數(shù)表的是D的虛函數(shù)地址。
A的變量分配
B的虛函數(shù)表指針
B的變量分配
C的虛函數(shù)表指針
C的變量分配
D的變量分配
如果有虛函數(shù)覆蓋,則和上面描述相同,用D的虛函數(shù)地址覆蓋相應(yīng)的父類的虛
函數(shù)表中虛函數(shù)的地址。








歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1