激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++空類及沒有成員變量的類的大小實例分析

C++空類及沒有成員變量的類的大小實例分析

2021-01-22 11:47C++教程網(wǎng) C/C++

這篇文章主要介紹了C++空類及沒有成員變量的類的大小,對于初學者更好的了解C++的指針及類的存儲結構很有幫助,需要的朋友可以參考下

眾所周知的C++空類的大小為1,但是除了空類之外的其他一些沒有成員變量的類的大小,還是有相當一部分開發(fā)人員對此有很多不明之處的。

這里我們以如下代碼為例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include
using namespace std;
class a {};
class b{};
class c :public a{
virtual void fun() = 0;
};
class d :public b, public c{};
int main()
{
cout << "sizeof(a)" << sizeof(a) << endl;
cout << "sizeof(b)" << sizeof(b) << endl;
cout << "sizeof(c)" << sizeof(c) << endl;
cout << "sizeof(d)" << sizeof(d) << endl;
getchar();
return 0;
}

程序執(zhí)行的輸出結果為:

?
1
2
3
4
sizeof(a)=1
sizeof(b)=1
sizeof(c)=4
sizeof(d)=8

為什么會出現(xiàn)這種結果呢?初學者肯定會對此疑惑不解,類a,b明明是空類,它的大小應該為為0,為什么編譯器輸出的結果為1呢?這就是我們剛才所說的實例化的原因(空類同樣可以被實例化),每個實例在內(nèi)存中都有一個獨一無二的地址,為了達到這個目的,編譯器往往會給一個空類隱含的加一個字節(jié),這樣空類在實例化后在內(nèi)存得到了獨一無二的地址,所以a,b的大小為1。

而類c是由類a派生而來,它里面有一個純虛函數(shù),由于有虛函數(shù)的原因,有一個指向虛函數(shù)表的指針(vptr,有多個虛函數(shù)仍然是只有一個指針),在32位的系統(tǒng)分配給指針的大小為4個字節(jié),所以最后得到c類的大小為4

類d的大小更是會讓很多的初學者疑惑,類d是由類b,c派生而來的,它的大小應該為二者之和5,為什么卻是8呢?這是因為為了提高實例在內(nèi)存中的存取效率,內(nèi)存中會有數(shù)據(jù)對齊,于是類的大小往往被調(diào)整到4字節(jié)的整數(shù)倍。并采取就近的法則,往大的方向取最近的倍數(shù),就是該類的大小,所以類d的大小為8個字節(jié)(假如d由3個空類和c派生而來,仍然是8)。

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現(xiàn)同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++深入理解goto語句的替代實現(xiàn)方式分析

    深入理解goto語句的替代實現(xiàn)方式分析

    本篇文章是對goto語句的替代實現(xiàn)方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網(wǎng)7342020-12-03
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內(nèi)存中的數(shù)據(jù)都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C/C++經(jīng)典實例之模擬計算器示例代碼

    C/C++經(jīng)典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經(jīng)典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C語言實現(xiàn)電腦關機程序

    C語言實現(xiàn)電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 少妇一级淫片高潮流水电影 | 91麻豆精品国产91久久久更新资源速度超快 | 日韩精品久久久久久久电影99爱 | 成年免费在线视频 | 电影av在线 | 亚洲第一页中文字幕 | 黄色av网站免费看 | 欧美综合成人 | 色吧综合网 | 成年人在线视频 | 免费观看国产精品视频 | 成人精品久久久 | 一区二区三区日韩在线观看 | 一区二区三区小视频 | 欧美久久一区 | av在线官网 | 我爱我色成人网 | 亚洲一区二区三区日本久久九 | 国产精品免费一区二区三区都可以 | qyl在线视频精品免费观看 | 午夜精品福利在线观看 | 久久国产28| 国产毛毛片一区二区三区四区 | 久久久久久久久久久av | 日本在线视频免费观看 | 亚洲欧美日韩精品久久 | 天天草天天爱 | 羞羞电影网 | 亚洲aⅴ免费在线观看 | 草莓福利视频在线观看 | 亚洲一区二区国产 | 国产精品成人亚洲一区二区 | 久久成人免费观看 | 黄色免费播放网站 | 欧美一级做性受免费大片免费 | 免费三级大片 | 精品一区二区三区免费 | a黄在线观看 | 色偷偷一区 | 毛片大全 | 在线观看免费毛片视频 |