【c++基礎】菱形繼承問題
先上程式碼:
#include <iostream>
using namespace std;
//動物類
class animmal {
public:
int age;
double price;
string name;
};
//羊類
class yang : virtual public animmal{
public:
int weight;
};
//駝類
class tuo : virtual public animmal {
public:
int weight;
int weight1;
};
//羊駝類
class yangtuo :public yang, public tuo {
};
int main() {
yangtuo yt;
return 0;
}
開啟vs的Developer Command Prompt for VS 2019
按照以下步驟輸入
1、首先進入到專案的工程資料夾下,我存放的是E盤,所以輸入 E:
2、然後 cd 到具體的專案資料夾下;
3、然後輸入
cl /d1 reportSingleClassLayoutyangtuo 源.cpp
此處注意:report小寫,後面的單詞首字母大寫
yangtuo是類的名稱,你的類叫什麼就改成什麼,後面的源.cpp是項的名稱。
如果還有不懂的看下面的原始碼:
原始碼分析
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.7.6
** Copyright (c) 2020 Microsoft Corporation
**********************************************************************
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community>
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community>e;
'e' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community>e:
E:\>cd E:\algorithm\diamod_inherit
E:\algorithm\diamod_inherit>cl /d1 reportSingleClassLayoutyangtuo 源.cpp
用於 x86 的 Microsoft (R) C/C++ 優化編譯器 19.27.29112 版
版權所有(C) Microsoft Corporation。保留所有權利。
源.cpp
class yangtuo size(64):
+---
0 | +--- (base class yang)
0 | | {vbptr}
4 | | weight
| +---
8 | +--- (base class tuo)
8 | | {vbptr}
12 | | weight
16 | | weight1
| | <alignment member> (size=4)
| +---
| <alignment member> (size=4)
+---
+--- (virtual base animmal)
24 | age
| <alignment member> (size=4)
32 | price
40 | ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@ name
+---
yangtuo::$vbtable@yang@:
0 | 0
1 | 24 (yangtuod(yang+0)animmal)
yangtuo::$vbtable@tuo@:
0 | 0
1 | 16 (yangtuod(tuo+0)animmal)
vbi: class offset o.vbptr o.vbte fVtorDisp
animmal 24 0 4 0
Microsoft (R) Incremental Linker Version 14.27.29112.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:源.exe
源.obj
E:\algorithm\diamod_inherit>
相關文章
- C++菱形繼承C++繼承
- 菱形繼承,虛繼承繼承
- 菱形繼承與虛基類繼承
- <十>關於菱形繼承繼承
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 繼承問題繼承
- C++ 記憶體分佈之菱形繼承(無虛擬函式)C++記憶體繼承函式
- delegate 繼承問題繼承
- python 基礎之繼承、重寫、多繼承Python繼承
- 【C++基礎】公有,私有和受保護的繼承C++繼承
- java繼承基礎詳解Java繼承
- JavaScript基礎: 類與繼承JavaScript繼承
- java 繼承的基礎(轉)Java繼承
- C++繼承一之公有繼承C++繼承
- C++繼承C++繼承
- corejava基礎知識(1)-繼承Java繼承
- javascript基礎-原型鏈與繼承JavaScript原型繼承
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承
- 模板類的繼承問題繼承
- C++ | 類繼承C++繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- JavaSE基礎知識學習-----繼承Java繼承
- C++繼承體系C++繼承
- C++中的繼承C++繼承
- [提問交流]前臺模板繼承問題繼承
- JS基礎-完美掌握繼承知識點JS繼承
- Java基礎之淺談繼承、多型Java繼承多型
- JAVA繼承的初始化問題Java繼承
- [C++]繼承和派生類C++繼承
- C++虛繼承的概念C++繼承
- 說說C++多重繼承C++繼承
- c++ 虛繼承詳解C++繼承
- c++ 記憶體 繼承C++記憶體繼承
- C++ 整理15_繼承C++繼承
- C++ protected繼承意義C++繼承
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- [打牢基礎系列]JavaScript的類與繼承JavaScript繼承