2
就我所知,std::string
是非POD類型。
當我定義一個包含std::string
字段的結構。
我仍然可以使用brace-init-list
來初始化結構嗎?
該代碼波紋管的作品。編譯器不給我警告。我錯過了什麼嗎?我可以使用`brace-init-list`初始化一個包含`std :: string`字段的結構嗎?
#include <stdio.h>
#include <string>
int main()
{
struct Book
{
int id;
std::string title;
};
Book book = {42, "hello, world"};
printf("%d:%s\n", book.id, book.title.c_str());
}
$ g++ --version
g++ (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)
$ g++ -Wall -std=c++98 main.cpp -lstdc++
$ ./a.out
42:hello, world
' 「不管是不是成員本身是莢或聚集無所謂的。」'。它在C++ 03中很重要。 – Nawaz 2012-02-13 08:34:26
'聚合是沒有用戶聲明的構造函數(12.1),沒有私有或受保護的非靜態數據成員(第11節),沒有基類(第10節),也沒有虛函數的數組或類(10.3)。'因此,Book類型*是一個聚合。 – fredoverflow 2012-02-13 08:40:49
嗯..你說得對。 +1 :-) – Nawaz 2012-02-13 08:45:00