cppopp
關(guān)于虛函數(shù)和虛繼承的一點(diǎn)思考
今天寫了個(gè)測試程序
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
}
運(yùn)行結(jié)果為:
這個(gè)結(jié)果很容易理解,sizeof(a)為 aa[3] + 虛指針的大小,也即4+4 = 8(經(jīng)過一次數(shù)據(jù)對(duì)齊)。
sizeof(b)就為 b自身的大小8 + sizeof(a)+指針大小 = 8 +8 +4 = 20;
sizeof(c)和b的大小算法類似 為 =8+ 20 + 4 =32
那如果程序改成非虛繼承那么結(jié)果是什么樣呢?
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
運(yùn)行結(jié)果為:
那么這個(gè)結(jié)果就有點(diǎn)意思,到底是為什么呢?
http://www.diybl.com/course/3_program/c++/cppjs/2007927/74925.html
有詳細(xì)的解釋。
posted on 2011-12-01 10:06
sheng
閱讀(350)
評(píng)論(0)
編輯
收藏
引用
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © sheng
導(dǎo)航
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
<
2025年5月
>
日
一
二
三
四
五
六
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
統(tǒng)計(jì)
隨筆 - 27
文章 - 0
評(píng)論 - 4
引用 - 0
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(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)
同行
搜索
最新評(píng)論
1.?re: windows 下進(jìn)程是否啟動(dòng)檢測
這種方法還有缺陷的
如果在多用戶的機(jī)器下, 不同的用戶下看不到對(duì)方用戶下的進(jìn)程
--leng
2.?re: windows 下進(jìn)程是否啟動(dòng)檢測
這個(gè)沒有必要用互斥對(duì)象吧,只是讀進(jìn)程表而已@augustheart
--sheng
3.?re: windows 下進(jìn)程是否啟動(dòng)檢測
不用互斥對(duì)象么?
--augustheart
4.?re: 設(shè)計(jì)模式之策略模式[未登錄]
Good...
--eryar
閱讀排行榜
1.?利用boost 來進(jìn)行xml解析(13301)
2.?DLL中傳遞STL參數(shù),vector對(duì)象作為dll參數(shù)傳遞等問題(轉(zhuǎn))(6712)
3.?windows 下檢測進(jìn)程cpu使用率(3772)
4.?luabind和c++相互調(diào)用(3679)
5.?關(guān)于for循環(huán)的執(zhí)行效率問題(3238)
評(píng)論排行榜
1.?windows 下進(jìn)程是否啟動(dòng)檢測(3)
2.?設(shè)計(jì)模式之策略模式(1)
3.?設(shè)計(jì)模式之template method模式(0)
4.?設(shè)計(jì)模式之觀察者模式(0)
5.?boost安裝(0)
成人午夜精品久久久久久久小说
|
久久精品国产欧美日韩99热
|
色欲综合久久躁天天躁
|
国产亚洲欧美成人久久片
|
99久久99久久精品免费看蜜桃
|
亚洲精品乱码久久久久久久久久久久
|
国内精品久久久久久久涩爱
|
久久影院综合精品
|
久久久亚洲欧洲日产国码二区
|
色妞色综合久久夜夜
|
久久久久青草线蕉综合超碰
|
中文精品久久久久人妻不卡
|
亚洲愉拍99热成人精品热久久
|
少妇内射兰兰久久
|
国产亚洲精品自在久久
|
久久国产精品一区二区
|
99久久免费国产精品
|
久久成人18免费网站
|
久久热这里只有精品在线观看
|
久久久久久久波多野结衣高潮
|
久久亚洲欧美国产精品
|
丰满少妇人妻久久久久久
|
国产精品18久久久久久vr
|
久久国产免费直播
|
精品久久久久久无码中文字幕一区
|
久久久久综合网久久
|
亚洲国产日韩欧美久久
|
亚洲AV无码久久精品成人
|
久久国产精品波多野结衣AV
|
久久成人小视频
|
久久亚洲精品视频
|
午夜精品久久久久9999高清
|
久久久久亚洲AV无码麻豆
|
久久精品成人影院
|
久久精品亚洲中文字幕无码麻豆
|
久久国产成人
|
久久久久亚洲AV无码麻豆
|
亚洲午夜精品久久久久久浪潮
|
精品熟女少妇av免费久久
|
午夜精品久久久久久
|
国产精品一久久香蕉产线看
|