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

时间:2016-09-29 15:05:46

标签: c# c++ oop

我想在下面的代码中理解

class x
{
    int a=3;
    ...
    other class members
}

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

这两种初始化方法有什么区别? 它也与静态类有关吗?

1 个答案:

答案 0 :(得分:1)

  

根据C ++ 11标准,我们可以为a提供类内初始化程序   数据成员。当我们创建对象时,类内初始化器将是   用于初始化数据成员。没有初始化程序的成员   默认初始化。

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

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

  • 如果您使用类内初始值设定项,则会用于设置a = 3
  • 如果您只在默认构造函数中初始化a,那么a将被取消初始化。