繁体   English   中英

struct / class成员的显式初始化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM