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)
99久久精品费精品国产一区二区
|
国产精品一区二区久久国产
|
情人伊人久久综合亚洲
|
九九99精品久久久久久
|
国产69精品久久久久99
|
天天做夜夜做久久做狠狠
|
久久人人青草97香蕉
|
狼狼综合久久久久综合网
|
久久精品视频网
|
久久AV高潮AV无码AV
|
久久精品蜜芽亚洲国产AV
|
久久男人AV资源网站
|
久久精品水蜜桃av综合天堂
|
久久亚洲国产成人影院网站
|
久久精品国产亚洲av麻豆图片
|
久久久久一区二区三区
|
思思久久99热只有频精品66
|
色综合久久精品中文字幕首页
|
久久婷婷五月综合色奶水99啪
|
久久精品人人做人人爽电影
|
AV无码久久久久不卡蜜桃
|
国产午夜精品久久久久九九
|
亚洲女久久久噜噜噜熟女
|
久久久久亚洲精品无码网址
|
99精品国产在热久久
|
精品无码久久久久国产动漫3d
|
久久精品无码一区二区三区免费
|
99久久国语露脸精品国产
|
婷婷久久香蕉五月综合加勒比
|
欧美日韩精品久久久久
|
久久精品?ⅴ无码中文字幕
|
国产精品久久久久影院色
|
99久久精品免费看国产免费
|
久久综合狠狠综合久久综合88
|
一本大道久久香蕉成人网
|
久久电影网
|
久久99热这里只有精品66
|
尹人香蕉久久99天天拍
|
一97日本道伊人久久综合影院
|
日韩久久久久中文字幕人妻
|
久久男人Av资源网站无码软件
|