空類不為空

反直覺C++??, ??歡迎github star

空類不為空

#include <iostream>

class Empty {};

int main() {
    std::cout << "sizeof(Empty):" << sizeof(Empty) << std::endl;
    Empty empty;
    std::cout << "sizeof(empty):" << sizeof(empty) << std::endl;
}

輸出

sizeof(Empty):1
sizeof(empty):1

Empty類無任何成員變量,但是sizeof(Empty)sizeof(empty)卻為1,有點反直覺。

奇怪的知識增加了

這是類實例化的原因,空類也可以被實例化,如果對空的類sizeof取值為0,那么該空類實例化出很多實例時,在內存地址上就不能區(qū)分該類實例化出的實例,所以為了實現(xiàn)每個實例在內存中都有一個獨一無二的地址,編譯器往往會給一個空類隱含的加一個字節(jié),這樣空類在實例化后在內存得到了獨一無二的地址,所以空類所占的內存大小是1個字節(jié)。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、new和malloc的區(qū)別1、new和delete配對,釋放數(shù)組需要用delete[]。new和delete實...
    靜熙老師哈哈哈閱讀 711評論 2 7
  • 首先介紹一下虛繼承吧。 在虛繼承下,對給定虛基類,無論該類在派生層次中作為虛基類出現(xiàn)多少次,只繼承一個共享的基類子...
    K_Augus閱讀 960評論 0 50
  • 轉載自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay閱讀 6,476評論 1 5
  • 寫在開頭 非原創(chuàng),知識搬運工,本節(jié)介紹了基本數(shù)據(jù)類型及長度,字符串、byte和rune之間的區(qū)別,如何比較字符串d...
    溫嶺夾糕閱讀 517評論 0 1
  • 在程序運行過程中,總會遇到各種各樣的錯誤。 有的錯誤是程序編寫有問題造成的,比如本來應該輸出整數(shù)結果輸出了字符串,...
    jbb_43b0閱讀 1,085評論 0 0

友情鏈接更多精彩內容