[英]Explicit initialization of struct/class members
struct some_struct{
int a;
};
some_struct n = {};
na之后会是0;
我知道这种大括号形式的初始化是从C继承的,并且支持与C程序兼容,但这只能用C ++编译,而不能用C编译器编译。 我正在使用Visual C ++ 2005。
在C这种类型的初始化
struct some_struct n = {0};
是正确的,并将零初始化结构的所有成员。
是一对空的大括号形式的初始化标准? 我首先在msdn的WinAPI教程中看到了这种初始化形式。
初始化的空括号形式在C ++中是标准的(语法明确允许)。 请参阅C静态数组初始化 - 我需要多详细? 如果您有兴趣了解更多详情。
我假设它已添加到C ++中,因为在所有情况下将0值用于默认初始值可能不合适。
它是C ++的标准,它不在C语言中。
语法被引入到C ++中,因为某些对象不能用0初始化,并且没有通用的方法来执行数组的值初始化。
{0}显然是C99。
以C89和C ++兼容的方式初始化的另一种方法是这个“技巧”:
struct some_struct {int a; };
static some_struct zstruct;
some_struct n = zstruct;
这使用了静态变量使用0'ed内存预先初始化的事实,这与堆栈或堆上的声明相反。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.