Gre*_*reg 8 c++ ada aggregate-initialization
假设我有以下结构:
struct sampleData
{
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
在使用时,我想将sampleData类型的变量初始化为已知状态.
sampleData sample = { 1, 2 }
Run Code Online (Sandbox Code Playgroud)
后来,我决定我需要在我的sampleDatastruct中存储更多数据,如下所示:
struct sampleData
{
int x;
int y;
int z;
};
Run Code Online (Sandbox Code Playgroud)
我的理解是,从我的预z数据结构遗留下来的两个字段初始化仍然是一个有效的语句,并将被编译.使用默认值填充缺少的字段.
这种理解是否正确?我最近一直在Ada工作,它也允许聚合初始化,但是它会将类似的问题标记为编译错误.假设我对上面的C++代码的假设是正确的,是否有一种语言结构可以将缺少的初始化值识别为错误?
只有Aggregate Classes支持以这种方式初始化变量.
如果添加的构造函数(或多个),然后然后问题消失,但你需要改变语法一点,你失去了存储能力struct的union(除其他事项外).
struct sampleData
{
sampleData(int x, int y) : x(x), y(y) {}
int x;
int y;
};
sampleData sample( 1, 2 );
Run Code Online (Sandbox Code Playgroud)
添加z(和更改构造函数)将标记sample( 1, 2 )为编译错误.