Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构/类成员的显式初始化_C++_C_Struct_Initialization - Fatal编程技术网

C++ 结构/类成员的显式初始化

C++ 结构/类成员的显式初始化,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教程中看到这种形式的初始化。我发现下面的链接对这个特定问题非常有用

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++中,因为一些对象不能用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};