遠(yuǎn)風(fēng)工作室
C++博客
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
隨筆:92 文章:0 評論:72 引用:0
類的特殊大小情況
現(xiàn)對某些特殊情況的類的大小做總結(jié):
1.空類
2.帶有虛函數(shù)的類
3.繼承父類的子類
4.帶有static成員的類
5.普通類
class
A
{
}
;
//
結(jié)果:sizeof(A)=1
//
原因:空類并不是什么都沒有,而是隱含插入了一個字節(jié)作為地址偏移量。如果空類長度為0,那創(chuàng)建n個類實例時會出現(xiàn)這些實例都在同一位置的問題。
class
A
{
int
num;
virtual
void
func()
=
0
;
}
;
//
結(jié)果:sizeof(A)=8
//
原因:如果類中有純虛函數(shù)或者虛函數(shù),那么有一個指向虛函數(shù)的指針,該指針大小為4個字節(jié)。
class
A
{
}
;
class
B :
public
A
{
//
添加
}
;
//
結(jié)果:“添加”處沒有任何語句,sizeof(B)=1;添加int a,sizeof(B)=4。
//
原因:和非繼承的情況一樣。
class
A
{
}
;
class
B
{
}
;
class
C :
public
B,
public
A
{
//
添加
}
;
//
結(jié)果:“添加”處中不加任何語句,sizeof(C)=1;添加int a,sizeof(C)=18;添加char a,sizeof(C)=12;添加short,sizeof(C)=14。
//
原因:不添加任何語句的那1個字節(jié)是偏移量,而添加其他變量后因為對齊的原因(和結(jié)構(gòu)體相同),所以出現(xiàn)這種結(jié)果。
class
A
{
int
b;
static
int
a;
}
;
//
結(jié)果:sizeof(A)=4
//
原因:類的靜態(tài)數(shù)據(jù)成員放在全局靜態(tài)存儲區(qū)中,不影響類的大小。而類的非靜態(tài)數(shù)據(jù)成員只有被實例化的時候,他們才存在。
class
A
{
A()
{}
;
~
A()
{}
;
int
Func()
{}
;
int
a;
}
;
//
結(jié)果:sizeof(A)=4
//
原因:類的大小與它當(dāng)中的構(gòu)造函數(shù),析構(gòu)函數(shù),以及其他的成員函數(shù)無關(guān)(純虛函數(shù)除外),只與它當(dāng)中的成員數(shù)據(jù)有關(guān)。
從以上的幾個例子不難發(fā)現(xiàn)類的大?。?br>
1.為類的非靜態(tài)成員數(shù)據(jù)的類型大小之和
2.有編譯器額外加入的成員變量的大小,用來支持語言的某些特性(如:指向虛函數(shù)的指針)
3.為了優(yōu)化存取效率,進(jìn)行的邊緣調(diào)整
4.與類中的構(gòu)造函數(shù),析構(gòu)函數(shù)以及其他的成員函數(shù)無關(guān)
發(fā)表于 2009-10-17 19:02
遠(yuǎn)風(fēng)
閱讀(362)
評論(0)
編輯
收藏
引用
所屬分類:
C/C++基礎(chǔ)
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
C/C++小結(jié)雜燴
32位系統(tǒng)中VC++可識別類型
使用MessageBox進(jìn)行多線程調(diào)試
const在C和C++中的不同
數(shù)據(jù)存儲類型:auto/static/register/extern
string用法總結(jié)
類的特殊大小情況
常用Win IDE庫函數(shù)
C/C++小結(jié)雜燴
LIB和DLL的區(qū)別與使用
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2009年10月
>
日
一
二
三
四
五
六
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
留言簿
(3)
給我留言
查看公開留言
查看私人留言
隨筆分類
(93)
ACM(5)
(rss)
C/C++基礎(chǔ)(20)
(rss)
Linux編程(16)
(rss)
MFC(7)
(rss)
MySQL(2)
(rss)
OPNET仿真(11)
(rss)
PHP(13)
(rss)
Python(3)
(rss)
STL(4)
(rss)
Web技術(shù)(2)
(rss)
Windows管理(3)
(rss)
數(shù)據(jù)結(jié)構(gòu) / 算法(7)
(rss)
收藏夾
(2)
C/C++基礎(chǔ)(1)
(rss)
數(shù)據(jù)結(jié)構(gòu) / 算法(1)
(rss)
搜索
積分與排名
積分 - 330102
排名 - 73
最新評論
1.?re: makefile和make規(guī)則
可以評論么
--馮智浩
2.?re: PHP調(diào)用外部程序的方法
大的as打算阿達(dá)的
--碩大的
3.?re: LIB和DLL的區(qū)別與使用
太贊,收藏一下,謝謝
--mymimi1988
4.?re: LIB和DLL的區(qū)別與使用
好文,好內(nèi)容;
--wsdxyz
5.?re: LIB和DLL的區(qū)別與使用
寫的非常詳細(xì),感謝。
--Forward
6.?re: LIB和DLL的區(qū)別與使用
非常好,說得很詳細(xì),也很明白,學(xué)習(xí)了!
--xihuwuyu
7.?re: LIB和DLL的區(qū)別與使用
感覺很好,對于才接觸dll的我來說很夠用。。
--Chosan
8.?re: VC中ListCtrl經(jīng)驗總結(jié)【轉(zhuǎn)載】[未登錄]
總結(jié)的很好啊,轉(zhuǎn)了
--king
9.?re: LIB和DLL的區(qū)別與使用
就我自己沒看太懂嗎
--AzzStyle
10.?re: LIB和DLL的區(qū)別與使用
通俗易懂,呵
--我的
閱讀排行榜
1.?LIB和DLL的區(qū)別與使用(76528)
2.?虛擬機VMware tools安裝【轉(zhuǎn)載】(36579)
3.?Linux串口編程(24877)
4.?tar命令的C參數(shù)(18889)
5.?判斷素數(shù)的算法(11421)
6.?VC中ListCtrl經(jīng)驗總結(jié)【轉(zhuǎn)載】(11313)
7.?PHP調(diào)用外部程序的方法(11093)
8.?makefile和make規(guī)則(9209)
9.?C++進(jìn)階必讀書籍【轉(zhuǎn)載】(8430)
10.?insert時出現(xiàn)主鍵沖突的處理方法【轉(zhuǎn)載】(8243)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 遠(yuǎn)風(fēng)
久久久久亚洲Av无码专
|
人妻无码久久精品
|
久久精品一区二区三区不卡
|
国产亚洲美女精品久久久久狼
|
久久久青草久久久青草
|
亚洲国产成人久久综合区
|
亚洲国产一成人久久精品
|
91超碰碰碰碰久久久久久综合
|
亚洲午夜精品久久久久久浪潮
|
国内精品人妻无码久久久影院导航
|
久久Av无码精品人妻系列
|
精品综合久久久久久88小说
|
免费一级做a爰片久久毛片潮
|
国产精品一区二区久久精品涩爱
|
久久99国产精品尤物
|
午夜精品久久久久久
|
久久久91精品国产一区二区三区
|
久久国产欧美日韩精品
|
国内精品久久国产大陆
|
亚洲国产精品久久久天堂
|
色悠久久久久久久综合网
|
亚洲国产精品久久久久婷婷老年
|
亚洲中文精品久久久久久不卡
|
久久亚洲精品无码观看不卡
|
99久久国产综合精品网成人影院
|
青青草国产精品久久
|
久久综合狠狠综合久久
|
三级三级久久三级久久
|
久久久久亚洲精品无码蜜桃
|
国产香蕉久久精品综合网
|
久久久免费观成人影院
|
久久精品国产一区二区
|
午夜精品久久影院蜜桃
|
日本久久久久久久久久
|
久久中文字幕无码专区
|
欧美精品福利视频一区二区三区久久久精品
|
理论片午午伦夜理片久久
|
99热成人精品免费久久
|
国产精品免费久久
|
久久精品成人一区二区三区
|
久久亚洲中文字幕精品一区四
|