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

2022-07-25 00:21:29 字數 327 閱讀 5008

聚合(aggregate)

c++語法規定:不能使用初始值列表來初始化"非聚合(non-aggregate)"的物件。那麼,什麼才算是"聚合"呢?c++認為聚合包括滿足如下條件的陣列、類及結構:

不包含任何建構函式。

不包含任何私有/保護成員。

不包含任何基類。

不包含任何虛函式。

所以結構體如果定義建構函式, 則列表初始化不能使用。

在c裡面編輯結構體是沒有建構函式, 自然也編譯不過。

所以一般跨平台寫結構體的。

struct a};

這樣, 但是定義的時候, 列表初始化, 也並不能直接附上值

C 結構體初始化

今天在看mfc結構時,順便看了看 深入淺出mfc 發現有這麼一行 m pmainwnd new cmyframewnd 乍一看,很正常啊,再仔細一看,貌似 new cmyframewnd 的時候少了一對括號。奇怪!之後又翻了翻書,發現好多處都是這樣的。難道我弄錯了,不可能啊,一般情況下在new乙個新...

c 結構體初始化

在 系統程式設計師成長計畫 看到的,好像有點道理。宣告 struct s 習慣的初始化 struct s h 這種初始化是按結構體成員宣告的順序進行初始化的,即利用了struct記憶體布局的方法。若struct成員順序被修改了,初始化將引入隱患。幸運的話會收到編譯器的warning或error,否則...

C 結構體初始化

結構體初始化的三種方式 方式1using namespace std struct student int main void printf kyrie的名字 s 手機號 s 年齡 d n kyrie.name,kyrie.phone.c str kyrie.age return0 方式2 有的編譯...