久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

關于C++多重繼承下虛表結構的問題

這篇文章主要介紹了C++ 多重繼承下虛表結構的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

昨天寫一個項目時遇到一個很詭異的現象 如下代碼所示:


class ParentA {
public :
	int a=0x123456;
	virtual void vFunParentA(){
		std::cout << "vFunParentA" << std::endl;
	}
};
class ParentB {
public:
	int b = 0x456;
	virtual void vFunParentB() {
		std::cout<<"vFunParentB"<<std::endl;
		int i = 0;
	}
};
class Child:public ParentA,public ParentB {
	int c = 0x789;
};
int main()
{

	//注意這里使用void*
	void* pChild = new Child;
	//強轉
	ParentB* pParentB = (ParentB*)pChild;
	//強轉
	ParentA* pParentA = (ParentA*)pChild;
	
	pParentB->vFunParentB();
	pParentA->vFunParentA();

	getchar();
	
}

現在執行后我們的預期輸出為

vFunParentB
vFunParentA

但實際輸出:

vFunParentA
vFunParentA

當時百思不得其“姐”,最后發現是自己對多重繼承下的虛表內存結構不夠了解。

博主另一外一篇關于虛表的:
c-15 c++虛表

在多重繼承下Child內存結構應該是如下結構:

在這里插入圖片描述

由于我們使用 void * 類型強轉為ParentBParentA返回的指針地址依然是ParentA,而沒有做內存偏移計算.如下圖所示:

在這里插入圖片描述

當我們不適用void*強轉后編譯器會幫我進行偏移計算會迫使ParentB偏移8字節,從而使pParentB 指向正確的內存虛表。

在這里插入圖片描述

在單一繼承下不會出現這類問題,我們最后看下本例中的內存結構:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

到此這篇關于關于C++ 多重繼承下虛表結構的問題的文章就介紹到這了,更多相關C++ 多重繼承虛表內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要介紹了++ 設計模式的基本原則,主要的目標是實現最終目的,高內聚,低耦合,開放封閉原則類的改動是通過增加代碼進行的,感興趣的小伙伴可參考下面文章的具體內容
這篇文章主要介紹了C++基于OpenCV手勢識別的實現源碼,這里用到背景減法模型知識,具體實例代碼跟隨小編一起看看吧
下面小編就為大家帶來一篇深入理解c++指針的指針和指針的引用。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
C++ 提供了異常機制,讓我們能夠捕獲運行時錯誤,本文就詳細的介紹了C++異常處理入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
這篇文章主要給大家介紹了關于C/C++中的內存模型和名稱空間詳解,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c/c++具有一定的參考學習價值,需要的朋友們下面隨著小編來
推箱子想必是很多人童年時期的經典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關于如何利用c++寫一個簡單的推箱子小游戲的相關資料,需要的朋友可以
主站蜘蛛池模板: 亚洲国产精品va在线看黑人 | 免费的一级视频 | 久久精品超碰 | 国产中文视频 | 99久久久久久 | 精品视频一区在线 | 国产成人小视频 | 一级大片网站 | 日本成人福利 | 国产精品久久久久久久毛片 | 视频一区二区在线观看 | aaa国产大片 | 午夜欧美一区二区三区在线播放 | 亚洲精品一区二区三区四区高清 | 免费观看一级特黄欧美大片 | 国产精品毛片一区二区三区 | 欧美日韩精品一区二区三区视频 | 男人av的天堂| 亚洲视频一区二区三区 | 国产视频在线观看一区二区三区 | 激情国产视频 | 欧美精品一区在线 | 中文字幕 亚洲一区 | 欧美精品一二三 | 成人免费在线视频 | 九九九久久国产免费 | 一级高清视频 | 久久久久国产精品 | 国产精品欧美一区二区 | 久久久久久国产精品免费免费狐狸 | 国产在线视频一区二区 | 人成精品 | 精品福利一区二区三区 | 中文字幕在线观看成人 | 罗宾被扒开腿做同人网站 | 五月天婷婷激情 | 国产精品美女久久久久久久网站 | 在线小视频 | 成人在线免费观看 | 久久99深爱久久99精品 | 人人干人人超 |