2
成員初始值設定項中使用的sizeof的行爲是什麼?我無法找到關於這個的描述。在下面的代碼示例中它是安全的嗎?即struct
會員編譯後會把A
正確的大小寫入b
?成員初始值設定項中使用的sizeof的行爲是什麼?
struct A
{
int a = 0;
int b = sizeof(A);
int c = 3;
int d = 4;
char s[256];
A()
{
//printf("b = %d\n", b);
}
};
應該正常工作。結構聲明不依賴於初始化器,所以在創建結構的時候sizeof將被填充,此時結構的大小已知。 –
你應該嘗試一些更有趣的事情。添加地圖或其他東西。 –
「添加地圖」有什麼不同?當涉及到'sizeof'時,'std :: map'具有固定的大小。它可能會有不同的動態大小,但這完全是無關緊要的。只要編譯器知道'class'或'struct'的定義,它就可以正常工作。任何其他類型的內容都不能包含未知大小的元素。這就是爲什麼你必須使用指針或引用尚未完全定義的對象。 –