首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11类成员初始化

C++11类成员初始化
EN

Stack Overflow用户
提问于 2017-09-03 10:41:26
回答 1查看 140关注 0票数 1

刚刚从C++11切换到C++03,我想知道,下面是否定义为始终为零初始化所有元素的数组data

代码语言:javascript
复制
template<size_t COUNT>
class Test {
public:
    uint32 data[COUNT] = {};
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 10:50:36

是的,它是有保证的;对于数组类型,列表初始化会转到聚合初始化

否则,如果T是聚合类型,则执行聚合初始化。

然后,对于聚合初始化:

如果初始化器子句的数量小于成员数或初始化程序列表完全为空,则其余成员将根据通常的列表初始化规则(对具有默认构造函数的非类类型和非聚合类执行值初始化,以及聚合的聚合初始化),由空列表初始化其余成员。

所以data的所有元素都将是值初始化,对于uint32,它们最终将是零初始化

否则,对象将为零初始化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46022598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档