cppopp
關于虛函數和虛繼承的一點思考
今天寫了個測試程序
1
#include
"
stdafx.h
"
2
#include
"
iostream
"
3
4
using
namespace
std;
5
6
class
a
{
7
public
:
8
char
k[
3
];
9
virtual
int
aa();
10
}
;
11
12
class
b:
public
virtual
a
13
{
14
15
public
:
16
char
m[
3
];
17
virtual
int
bb();
18
}
;
19
20
class
c:
public
virtual
b
21
{
22
public
:
23
char
s[
3
];
24
virtual
int
cc();
25
}
;
26
27
int
_tmain(
int
argc, _TCHAR
*
argv[])
28
{
29
30
cout
<<
"
sizeof(a)=:
"
<<
sizeof
(a)
<<
endl;
31
cout
<<
"
sizeof(b)=:
"
<<
sizeof
(b)
<<
endl;
32
cout
<<
"
sizeof(c)=:
"
<<
sizeof
(c)
<<
endl;
33
34
return
0
;
35
}
運行結果為:
這個結果很容易理解,sizeof(a)為 aa[3] + 虛指針的大小,也即4+4 = 8(經過一次數據對齊)。
sizeof(b)就為 b自身的大小8 + sizeof(a)+指針大小 = 8 +8 +4 = 20;
sizeof(c)和b的大小算法類似 為 =8+ 20 + 4 =32
那如果程序改成非虛繼承那么結果是什么樣呢?
1
#include
"
stdafx.h
"
2
#include
"
iostream
"
3
4
using
namespace
std;
5
6
class
a
{
7
public
:
8
char
k[
3
];
9
virtual
int
aa();
10
}
;
11
12
class
b:
public
a
13
{
14
15
public
:
16
char
m[
3
];
17
virtual
int
bb();
18
}
;
19
20
class
c:
public
b
21
{
22
public
:
23
char
s[
3
];
24
virtual
int
cc();
25
}
;
26
27
int
_tmain(
int
argc, _TCHAR
*
argv[])
28
{
29
30
cout
<<
"
sizeof(a)=:
"
<<
sizeof
(a)
<<
endl;
31
cout
<<
"
sizeof(b)=:
"
<<
sizeof
(b)
<<
endl;
32
cout
<<
"
sizeof(c)=:
"
<<
sizeof
(c)
<<
endl;
33
34
return
0
;
35
}
36
運行結果為:
那么這個結果就有點意思,到底是為什么呢?
http://www.diybl.com/course/3_program/c++/cppjs/2007927/74925.html
有詳細的解釋。
posted on 2011-12-01 10:06
sheng
閱讀(353)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © sheng
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2011年12月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
統計
隨筆 - 27
文章 - 0
評論 - 4
引用 - 0
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2018年11月 (1)
2016年8月 (2)
2016年6月 (1)
2016年4月 (4)
2013年4月 (1)
2013年3月 (1)
2013年1月 (1)
2012年11月 (5)
2012年8月 (3)
2012年6月 (1)
2012年5月 (1)
2012年4月 (3)
2011年12月 (3)
收藏夾
timer
(rss)
同行
(rss)
同行
搜索
最新評論
1.?re: windows 下進程是否啟動檢測
這種方法還有缺陷的
如果在多用戶的機器下, 不同的用戶下看不到對方用戶下的進程
--leng
2.?re: windows 下進程是否啟動檢測
這個沒有必要用互斥對象吧,只是讀進程表而已@augustheart
--sheng
3.?re: windows 下進程是否啟動檢測
不用互斥對象么?
--augustheart
4.?re: 設計模式之策略模式[未登錄]
Good...
--eryar
閱讀排行榜
1.?利用boost 來進行xml解析(13307)
2.?DLL中傳遞STL參數,vector對象作為dll參數傳遞等問題(轉)(6731)
3.?windows 下檢測進程cpu使用率(3802)
4.?luabind和c++相互調用(3683)
5.?關于for循環的執行效率問題(3239)
評論排行榜
1.?windows 下進程是否啟動檢測(3)
2.?設計模式之策略模式(1)
3.?設計模式之template method模式(0)
4.?設計模式之觀察者模式(0)
5.?boost安裝(0)
1000部精品久久久久久久久
|
青青草原综合久久大伊人
|
久久天天躁狠狠躁夜夜96流白浆
|
精品国产乱码久久久久软件
|
国色天香久久久久久久小说
|
久久国产免费观看精品3
|
久久成人精品
|
奇米综合四色77777久久
|
久久久久久极精品久久久
|
亚洲精品乱码久久久久久中文字幕
|
欧美亚洲另类久久综合
|
久久综合久久伊人
|
韩国三级大全久久网站
|
噜噜噜色噜噜噜久久
|
热99re久久国超精品首页
|
色狠狠久久综合网
|
久久se精品一区精品二区
|
久久婷婷国产剧情内射白浆
|
天天久久狠狠色综合
|
亚洲AV无码成人网站久久精品大
|
久久久WWW免费人成精品
|
97久久超碰国产精品旧版
|
久久久久久久综合狠狠综合
|
yellow中文字幕久久网
|
69久久精品无码一区二区
|
久久精品中文字幕一区
|
三级韩国一区久久二区综合
|
久久国产精品国产自线拍免费
|
亚洲国产成人久久精品99
|
久久精品无码一区二区app
|
国内精品伊人久久久久av一坑
|
国产精品久久久久久五月尺
|
午夜精品久久久内射近拍高清
|
精品水蜜桃久久久久久久
|
国产精品久久久久乳精品爆
|
久久久久久免费一区二区三区
|
国内精品伊人久久久久av一坑
|
少妇高潮惨叫久久久久久
|
久久久噜噜噜www成人网
|
日产精品久久久一区二区
|
影音先锋女人AV鲁色资源网久久
|