C++ sizeof 實(shí)例解析
在C++中使用sizeof要比C復(fù)雜很多,因?yàn)镃++類中有static靜態(tài)變量,virtual虛函數(shù),還有繼承、派生等。sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它并不是函數(shù)。sizeof操作符以字節(jié)形式給出了其操作數(shù)的存儲大小。
sizeof使用形式有三種:sizeof(var_name)或sizeof var_name或sizeof(var_type)。
【例1】:(列子中忽略構(gòu)造及析構(gòu)函數(shù))
class A
{
public:
void hello(){}
};
sizeof(A)= 1;
肯定不是零。舉個反例,如果是零的話,聲明一個class A a[10]對象數(shù)組,而每一個對象占用的空間是零,這時就沒辦法區(qū)分A[0],A[1]…了。
因?yàn)锳是空類,占字節(jié)為1是為了區(qū)分兩個不同的對象,也可以看做是占位符,該字節(jié)的地址也就是對象的地址。但是這里的1也不是絕對的,只是編譯器這樣設(shè)定而已。
【例2】:
class B
{
public:
void hello(){}
static int i;
};
sizeof(B) = 1;
【例3】:
classC
{
public:
virtual void hello(){}
};
sizeof(C)= 4;
B類中有虛函數(shù),相應(yīng)的會有虛表指針存在,占4個字節(jié),恰好是一個指針的空間。同時,如果有多個virtual函數(shù)或有多個類繼承了C類,虛函數(shù)也只占4個字節(jié),如【例4】:
【例4】:
class D : public C
{
public:
virtual void world(){}
virtual void nihao(){}
};
sizeof(D)= 4;
【例5】:
class E
{
public:
virtual void hello(){}
virtual void world(){}
staticint i;
static int j;
int k;
};
sizeof(E) = 8;
希望對你有所幫助。
相關(guān)文章
C語言sizeof和strlen的指針和數(shù)組面試題詳解
strlen是函數(shù),字符串長度,不包括停止符。而sizeof則是內(nèi)存塊的大小,包括停止符。數(shù)組是一種數(shù)據(jù)類型,數(shù)據(jù)類型的本質(zhì)就是固定大小,內(nèi)存塊的別名??梢杂胹izeof()一般都是數(shù)據(jù)類型2022-04-04Win10+VS2017新CUDA項(xiàng)目配置教程
這篇文章主要為大家詳細(xì)介紹了Win10+VS2017新CUDA項(xiàng)目配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09如何通過C++求出鏈表中環(huán)的入口結(jié)點(diǎn)
本文主要介紹了通過C++求解鏈表中環(huán)的入口結(jié)點(diǎn),即給一個長度為n鏈表,若其中包含環(huán),請找出該鏈表的環(huán)的入口結(jié)點(diǎn),否則,返回null。需要的朋友可以參考一下2021-12-12opencv圖片的任意角度旋轉(zhuǎn)實(shí)現(xiàn)示例
這篇博客將介紹如何使用OpenCV旋轉(zhuǎn)圖像任意角度,實(shí)現(xiàn)各個角度的旋轉(zhuǎn),具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06C語言循環(huán)鏈表實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了C語言循環(huán)鏈表實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11C語言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹的操作
二叉樹可以簡單理解為對于一個節(jié)點(diǎn)來說,最多擁有一個上級節(jié)點(diǎn),同時最多具備左右兩個下級節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹的實(shí)現(xiàn)和遍歷,需要的可以參考一下2022-04-04C語言 module_init函數(shù)與initcall案例詳解
這篇文章主要介紹了C語言 module_init函數(shù)與initcall案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08