类和构造函数初始化的区别

本文关键字:区别 初始化 构造函数 | 更新日期: 2023-09-27 18:09:25

我想理解下面的代码

class x
{
    int a=3;
    ...
    other class members
}
class y
{
    int a;
    public y()
    {
        a=3;
    }
    ...
    other class members
}

这两个初始化方法的区别是什么?它还与静态类有关吗?

类和构造函数初始化的区别

在c++ 11标准下,可以为a提供一个类内初始化器数据成员。当我们创建对象时,类内初始化器将是用于初始化数据成员。没有初始化式的成员默认初始化。

第一个示例使用了类内初始化器,而第二个示例仅在默认构造函数中初始化a

假设你有另一个构造函数z,它接受一些参数,但没有初始化数据成员a。然后调用z时,

  • 如果你使用类内初始化器,它将用于设置a = 3
  • 如果你只在默认构造函数中初始化a,那么a将不初始化。