我正在搞乱结构,并注意到以下两个例子,只有一个有效.他们来了:
struct Test
{
char *name;
int age;
};
Test p1 = { "hi", 5 };
//works
struct Test
{
char *name;
int age;
}p1;
p1 = { "hi", 5 };
//error
Run Code Online (Sandbox Code Playgroud)
为什么第一个编译而第二个编译不?不是任何一种方式p1的对象Test?谢谢.
在第一个示例中,您将在"大括号初始化" 中初始化具有两个值的结构.C++(或C)中不支持使用括号括起的列表分配给结构.
但是,您可以使用大括号初始化创建一个新结构,然后将其分配给旧结构(p).C++(和C)支持将一个结构分配给同一类型的另一个结构.
例如,在C++ 11中:
p1 = Test{ "hi", 5 };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |