[英]C++ Struct Value Initialization
我正在搞亂結構,並注意到以下兩個例子,只有一個有效。 他們來了:
struct Test
{
char *name;
int age;
};
Test p1 = { "hi", 5 };
//works
struct Test
{
char *name;
int age;
}p1;
p1 = { "hi", 5 };
//error
為什么第一個編譯而第二個編譯不? p1
不是Test
的對象嗎? 謝謝。
在第一個示例中,您將在“大括號初始化”中初始化具有兩個值的結構。 C ++(或C)中不支持使用括號括起的列表分配給結構。
但是,您可以使用大括號初始化創建一個新結構,然后將其分配給舊結構( p
)。 C ++(和C)支持將一個結構分配給同一類型的另一個結構。
例如,在C ++ 11中:
p1 = Test{ "hi", 5 };
以下適用於C ++ 11 :(使用g++ -std=c++11 init.cpp
)
#include <iostream>
struct XXX {
int a;
const char *b;
};
int main() {
XXX x;
x = XXX{1, "abc"};
// or later...
x = XXX{2, "def"};
std::cout << x.b << std::endl;
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.