關於c++中結構體列表初始化,聚合問題

聚合(aggregate)
C++語法規定:不能使用初始值列表來初始化"非聚合(non-aggregate)"的對象。那麼,什麼纔算是"聚合"呢?C++認爲聚合包括知足以下條件的數組、類及結構:
不包含任何構造函數。
不包含任何私有/保護成員。
不包含任何基類。
不包含任何虛函數。數組

因此結構體若是定義構造函數, 則列表初始化不能使用。
在c裏面編輯結構體是沒有構造函數, 天然也編譯不過。函數

因此通常跨平臺寫結構體的。
struct A{
int m_nValue;對象

ifdef __cplusplus
A()
{
m_nValue = 0;
}

endif

};
這樣, 可是定義的時候, 列表初始化, 也並不能直接附上值編譯

相關文章
相關標籤/搜索