国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ sizeof 實(shí)例解析

2020-01-26 15:59:00
字體:
供稿:網(wǎng)友

在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ù))

復(fù)制代碼 代碼如下:

class A 

    public:
        void hello(){} 
}; 
sizeof(A)= 1;

肯定不是零。舉個(gè)反例,如果是零的話,聲明一個(gè)class A a[10]對象數(shù)組,而每一個(gè)對象占用的空間是零,這時(shí)就沒辦法區(qū)分A[0],A[1]…了。

因?yàn)锳是空類,占字節(jié)為1是為了區(qū)分兩個(gè)不同的對象,也可以看做是占位符,該字節(jié)的地址也就是對象的地址。但是這里的1也不是絕對的,只是編譯器這樣設(shè)定而已。
【例2】:

復(fù)制代碼 代碼如下:

class B 

    public:
         void hello(){}
         static int i;
}; 
    sizeof(B) = 1;

因?yàn)閟tatic變量為類中共享,在靜態(tài)區(qū)分配空間,在編譯時(shí)就分配了空間,不占類內(nèi)存。
【例3】:
復(fù)制代碼 代碼如下:

classC

    public:
        virtual void hello(){}
};
sizeof(C)= 4;

B類中有虛函數(shù),相應(yīng)的會有虛表指針存在,占4個(gè)字節(jié),恰好是一個(gè)指針的空間。同時(shí),如果有多個(gè)virtual函數(shù)或有多個(gè)類繼承了C類,虛函數(shù)也只占4個(gè)字節(jié),如【例4】:
【例4】:
復(fù)制代碼 代碼如下:

class D : public C
{
    public:
        virtual void world(){}
        virtual  void nihao(){}
};
sizeof(D)= 4;

【例5】:
復(fù)制代碼 代碼如下:

class E

    public:
          virtual void hello(){}
          virtual void world(){}
          staticint i;
          static int j;
          int k;
};
     sizeof(E) = 8;

希望對你有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 来凤县| 礼泉县| 来凤县| 如东县| 屯门区| 凤凰县| 大城县| 霞浦县| 斗六市| 上栗县| 赞皇县| 东台市| 垦利县| 尤溪县| 沈阳市| 宁晋县| 麦盖提县| 壶关县| 望谟县| 当涂县| 镇坪县| 汽车| 宜黄县| 榆中县| 蕉岭县| 康马县| 渝北区| 巴楚县| 平乡县| 沈阳市| 台南市| 岚皋县| 隆安县| 建始县| 黔西| 宣威市| 宁安市| 河南省| 纳雍县| 庄浪县| 庄浪县|