C 子類的記憶體結構和繼承方式

2021-06-22 12:52:45 字數 1097 閱讀 4896

在c++中,如果類有虛函式,則在類物件的記憶體最開始的地方存放乙個虛函式表的指標,接著是成員變數;如果是子類,則是父類的乙個拷貝,其中

包括虛函式表指標(如果有虛函式的話)和父類成員變數,之後是子類的成員變數。類繼承的方式有三種,public,protected,private;這些就像類成員的保護

機制一樣,是由編譯器來控制的,記憶體中並沒有這種保護機制。通過下面的例子,組合和繼承對於子類的成員變數的儲存方式基本是相同,只是子類要求父類拷貝

必須在子類記憶體的前面。

主要區別是對類的成員的訪問機制上,組合只能通過類物件來訪問物件的成員變數和成員函式;繼承的訪問方式

其中,子類中訪問許可權一欄,是父類被子類繼承後,相當於在子類中的許可權,即子類有四種訪問控制許可權:public,protected,private,no access;

通過private繼承,父類的public和protected許可權變成了private,子類的成員函式仍是可以訪問的。但子類的子類是無法訪問的。

附上:其中組合和繼承的類的大小不同是由於物件變數的儲存順序不同,根據記憶體的對齊機制所以大小不同。

#include using namespace std;

class base

int a;

protected:

int b;

private:

int c;

};class wangt:public base;

char h;

protected:

char j;

private:

char k;

};class wa;

char h;

base b;

protected:

char j;

private:

char k;

};int main()

C 繼承,虛繼承 記憶體結構 詳解

目錄 class test1 private int num1 class test2 public test1 private int num2 void main test2記憶體結構 檢視記憶體發現父類在子類的上面 在原有的 基礎上增加了test3類 test3類繼承了 test2和test1...

C 繼承許可權和繼承方式

c 繼承的一般語法為 class 派生類名 繼承方式 基類名 繼承方式限定了基類成員在派生類中的訪問許可權,包括 public 公有的 private 私有的 和 protected 受保護的 此項是可選項,如果不寫,預設為 private 成員變數和成員函式預設也是 private 現在我們知道,...

從類的記憶體結構看C 繼承

先看下面這個簡單的例子,我們建立乙個基類 base class 通過簡單的繼承 inherit 產生兩個派生類 derived class 然後通過乙個基類的指標去呼叫這兩個派生類,並且呼叫類中的函式。class base void show2 class derived1 public base ...