C++ 结构/类成员的显式初始化
n、 在此之后,a将为0C++ 结构/类成员的显式初始化,c++,c,struct,initialization,C++,C,Struct,Initialization,n、 在此之后,a将为0 我知道这种支撑形式的初始化是从C继承的,并且支持与C程序的兼容性,但这只是用C++编译的,而不是用C编译器编译的。我使用Visual C++ 2005。< /P> 在C语言中,这种类型的初始化 struct some_struct{ int a; }; some_struct n = {}; 是正确的,将初始化结构的所有成员 空大括号是初始化的标准形式吗?我第一次在msdn的WinAPI教程中看到这种形式的初始化。我发现下面的链接对这个特定问题非常有用
我知道这种支撑形式的初始化是从C继承的,并且支持与C程序的兼容性,但这只是用C++编译的,而不是用C编译器编译的。我使用Visual C++ 2005。< /P> 在C语言中,这种类型的初始化
struct some_struct{
int a;
};
some_struct n = {};
是正确的,将初始化结构的所有成员
空大括号是初始化的标准形式吗?我第一次在msdn的WinAPI教程中看到这种形式的初始化。我发现下面的链接对这个特定问题非常有用
是C++中的标准,在C.
中不存在。语法引入到C++中,因为一些对象不能用0初始化,也就没有通用的方法来执行数组的值初始化。
< P>初始化的空括号形式是C++中的标准(语法允许的)。如果您感兴趣,请参阅以了解更多详细信息< P>我假设它被添加到C++中,因为在所有情况下,它不适合0值用于默认的init值。 < P> { 0 }显然是C99。< /P>
另一种在C89和C++兼容方式下初始化的方法是这个“技巧”:
构造某个结构{ INTA; }; 静态结构 某些结构n=zstruct这使用了一个事实,即静态变量是用0'ed内存预初始化的,这与堆栈或堆上的声明相反。用
{0}
初始化也对C89有效。
struct some_struct n = {0};