6 1 繼承體系下的物件構造步驟

2021-10-05 11:41:45 字數 1289 閱讀 8925

#include

"pch.h"

#include

#include

#include

#include

using

namespace std;

namespace _nmsp1 //命名空間

virtual~a

()virtual

void

myvirfunc()

virtual

void

myvirfunc2()

};classb:

public a

virtual~b

()virtual

void

myvirfunc()

virtual

void

myvirfunc2()

};classc:

public b

virtual~c

()virtual

void

myvirfunc()

virtual

void

myvirfunc2()

int m_c;};

//---------------------

void

func()

}int

main()

c cobj;

c::c(

)//末端類

b::b(

) a::a(

)//根源類

vptr = a::vftable;

//編譯器插入的** 34 9b 2f 01

cout <<

"a::a()"

<< endl;

//我們自己的**

vptr = b::vftable;

//編譯器插入的** 54 9b 2f 01

cout <<

"b::b()"

<< endl;

//我們自己的**

vptr = c::vftable;

//編譯器插入的** 3c 9b 2f 01

//....不要在這裡動虛函式表指標

//memset(this,0,sizeof(c));

m_c =11;

//初始化列表中基本型別變數m_c的賦值時機

cout <<

"c::c()"

<< endl;

//我們自己的**

java 繼承體系物件的構造過程

先說一下普通物件的構造過程 比如下面 public class hello 1 初始化objec的靜態變數,然後呼叫objec的靜態初始化塊 2 初始化hello的靜態變數,然後呼叫hello的靜態初始化塊 3 初始化object的例項變數,和例項 4 呼叫object的無參建構函式 5 初始化he...

不同繼承體系下帶虛函式的物件模型

單繼承 多繼承 class b1 virtual void fun2 public int b1 class b2 virtual void fun2 public int b2 class d public b1,public b2 virtual void fun3 public int d i...

集合繼承體系的物件導向思想

l 介面 用來明確所有集合中該具有的功能,相當於在定義集合功能標準 l 抽象類 把多個集合中功能實現方式相同的方法,抽取到抽象類實現,具體集合不再遍寫,繼承使用即可 具體類 繼承抽象類,實現介面,重寫所有抽象方法,達到具備指定功能的集合。每個具體集合類,根據自身的資料儲存結構方式,對介面中的功能方法...