【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++繼承多型記憶體模型
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 繼承問題繼承
- python 基礎之繼承、重寫、多繼承Python繼承
- delegate 繼承問題繼承
- C++繼承C++繼承
- JavaScript基礎: 類與繼承JavaScript繼承
- java繼承基礎詳解Java繼承
- javascript基礎-原型鏈與繼承JavaScript原型繼承
- corejava基礎知識(1)-繼承Java繼承
- C++ | 類繼承C++繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- 菱形類問題
- C++繼承體系C++繼承
- C++中的繼承C++繼承
- [提問交流]前臺模板繼承問題繼承
- JS基礎-完美掌握繼承知識點JS繼承
- Java基礎之淺談繼承、多型Java繼承多型
- dubbo繼承springboot出現的問題繼承Spring Boot
- C++ 整理15_繼承C++繼承
- C++ protected繼承意義C++繼承
- C++學習筆記——C++ 繼承C++筆記繼承
- C++高階教程之繼承得本質:單繼承(一)C++繼承
- C++中封裝和繼承的訪問許可權C++封裝繼承訪問許可權
- [打牢基礎系列]JavaScript的類與繼承JavaScript繼承
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- Java建構函式的繼承問題Java函式繼承
- 學習Java中遇到的繼承問題Java繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- c++中的繼承關係C++繼承
- 18、繼承以及繼承中成員變數和成員方法的重名問題繼承變數
- JAVA物件導向基礎--封裝 繼承 多型Java物件封裝繼承多型
- Python-單繼承中值傳遞的問題Python繼承
- c++繼承,隱藏(重定義)C++繼承
- [c++] 繼承和多型整理二C++繼承多型