c – 非静态数据成员初始化

前端之家收集整理的这篇文章主要介绍了c – 非静态数据成员初始化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根据C标准,以下三种结构定义是否有差异?
  1. struct Foo
  2. {
  3. int a;
  4. };
  5.  
  6. struct Foo
  7. {
  8. int a{};
  9. };
  10.  
  11. struct Foo
  12. {
  13. int a{0};
  14. };

最后两个是C 11.

解决方法

给定第一个定义,如果您创建一个具有自动存储持续时间的Foo实例,那么将会初始化一个.您可以执行聚合初始化来初始化它.
  1. Foo f{0}; // a is initialized to 0

Foo的第二和第三个定义都将初始化数据成员a到0.

在C 11中,2和3都不是aggregates,而是C 14 changes that rule,尽管添加了大括号或等初始化器,它们都保留了聚合.

猜你在找的C&C++相关文章