pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

關(guān)于C++多重繼承下虛表結(jié)構(gòu)的問題

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

前言

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


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;
	//強轉(zhuǎn)
	ParentB* pParentB = (ParentB*)pChild;
	//強轉(zhuǎn)
	ParentA* pParentA = (ParentA*)pChild;
	
	pParentB->vFunParentB();
	pParentA->vFunParentA();

	getchar();
	
}

現(xiàn)在執(zhí)行后我們的預期輸出為

vFunParentB
vFunParentA

但實際輸出:

vFunParentA
vFunParentA

當時百思不得其“姐”,最后發(fā)現(xiàn)是自己對多重繼承下的虛表內(nèi)存結(jié)構(gòu)不夠了解。

博主另一外一篇關(guān)于虛表的:
c-15 c++虛表

在多重繼承下Child內(nèi)存結(jié)構(gòu)應該是如下結(jié)構(gòu):

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

在單一繼承下不會出現(xiàn)這類問題,我們最后看下本例中的內(nèi)存結(jié)構(gòu):

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

到此這篇關(guān)于關(guān)于C++ 多重繼承下虛表結(jié)構(gòu)的問題的文章就介紹到這了,更多相關(guān)C++ 多重繼承虛表內(nèi)容請搜索html5模板網(wǎng)以前的文章希望大家以后多多支持html5模板網(wǎng)!

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

相關(guān)文檔推薦

這篇文章主要介紹了++ 設(shè)計模式的基本原則,主要的目標是實現(xiàn)最終目的,高內(nèi)聚,低耦合,開放封閉原則類的改動是通過增加代碼進行的,感興趣的小伙伴可參考下面文章的具體內(nèi)容
這篇文章主要介紹了C++基于OpenCV手勢識別的實現(xiàn)源碼,這里用到背景減法模型知識,具體實例代碼跟隨小編一起看看吧
下面小編就為大家?guī)硪黄钊肜斫鈉++指針的指針和指針的引用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
C++ 提供了異常機制,讓我們能夠捕獲運行時錯誤,本文就詳細的介紹了C++異常處理入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
這篇文章主要給大家介紹了關(guān)于C/C++中的內(nèi)存模型和名稱空間詳解,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c/c++具有一定的參考學習價值,需要的朋友們下面隨著小編來
推箱子想必是很多人童年時期的經(jīng)典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用c++寫一個簡單的推箱子小游戲的相關(guān)資料,需要的朋友可以
主站蜘蛛池模板: 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 恒温水槽与水浴锅-上海熙浩实业有限公司 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 影合社-影视人的内容合作平台 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | 广州昊至泉水上乐园设备有限公司| 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 中直网_行业门户-行业人专业的交流平台!| 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 佛山市德信昌电子有限公司| 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 |