struct/class成员的显式初始化

Zep*_*hon 13 c c++ struct initialization

struct some_struct{
    int a;
};
some_struct n = {};
Run Code Online (Sandbox Code Playgroud)

na之后会是0;

我知道这种大括号形式的初始化是从C继承的,并且支持与C程序兼容,但这只能用C++编译,而不能用C编译器编译.我正在使用Visual C++ 2005.

在C这种类型的初始化

struct some_struct n = {0};
Run Code Online (Sandbox Code Playgroud)

是正确的,并将零初始化结构的所有成员.

是一对空的大括号形式的初始化标准?我首先在msdn的WinAPI教程中看到了这种初始化形式.

Mic*_*urr 9

初始化的空括号形式在C++中是标准的(语法明确允许).请参阅C静态数组初始化 - 我需要多详细?如果您有兴趣了解更多详情.

我假设它已添加到C++中,因为在所有情况下将0值用于默认初始值可能不合适.


ava*_*kar 8

它是C++的标准,它不在C语言中.

语法被引入到C++中,因为某些对象不能用0初始化,并且没有通用的方法来执行数组的值初始化.