為什么會輸出以下內容1?#include <iostream>class Test{};int main(){ std::cout << sizeof(Test); return 0;}
3 回答

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
C ++標準保證任何類的大小至少為一個。C ++標準規定,任何對象都不應與另一個對象具有相同的內存地址。這樣做有幾個很好的理由。
為了保證new始終會返回指向不同內存地址的指針。
避免被零除。例如,指針算術(其中許多由編譯器自動完成)涉及除以sizeof(T)。
但是請注意,這并不意味著一個空的基類將為派生類的大小加1:
struct Empty { };
struct Optimized : public Empty {
char c;
};
// sizeof(Optimized) == 1 with g++ 4.0.1
Bjarne Stroustrup也談到了這一點。

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
沒有任何數據成員和成員函數的類,此類類型的類稱為空類??疹惖膶ο蟮拇笮∈冀K為1個字節。
當我們那時創建任何類的對象時,對象總是具有3個特征,即
州
行為
身分識別
那時我們創建空類的對象時,該對象的狀態為空。該對象的行為也不是什么,但是編譯器會為該對象分配一個唯一的地址。計算機中的內存始終以字節的形式組織,在對象地址位置可用的最小內存為1字節。這就是為什么空類的對象的大小為1個字節的原因。
- 3 回答
- 0 關注
- 565 瀏覽
添加回答
舉報
0/150
提交
取消