2010-10-11 90 views
4

可能重複:
Empty class in C++一堂課的大小是多少?

class Class1 
{ 
char c; 
}; 

class Class2 
{ 
}; 

什麼的Class1和Class2中的大小?

在VC6中,我得到了兩個1.有人可以解釋這一點嗎?

+0

@jleedev:我不同意,他的課不僅僅是一個空課,而且還有一個用'char c'。 – 2010-10-11 01:48:27

+1

@thyrgyle:作爲副本關閉並不意味着問題完全相同,這意味着理解現有的問題和答案也包含了新的問題。情況就是這樣。更清楚地說明相同和重複之間的區別:Q1:前五個素數是什麼? Q2:第三個素數是多少? Q2可以作爲Q1的重複而關閉。 – 2010-10-11 01:58:31

+0

@Ben:這是一個很好的例子。我在偷它。 – GManNickG 2010-10-11 03:35:00

回答

6

因爲指針運算(特別是減法運算符)可以除以大小,並且除零除外,所以沒有類的大小可以小於1。每個實例都有一個唯一的地址也是必要的,這意味着每個地址空間必須至少有一個字節的地址空間,因此最小大小再次爲1。

因此sizeof (Class1) == 1因爲這是內容所需要的,而sizeof (Class2) == 1因爲這是允許的最小值。

+0

我明白了。非常感謝你。 – mpouse 2010-10-13 00:25:32