成员对象声明的差异

difference in declaration of member objects

本文关键字:声明 成员对象      更新时间:2023-10-16
这可能是

一个非常基本的问题,但我从来没有正确理解它。当我声明通常在类中执行的成员变量时

class Bloke
   {
   public:
   Bloke(): age(24) {}
   int age;
   }

因此,我通常在分号后声明带有"membera((,memberb(("等的成员变量。随着时间的推移,我变得有点懒惰,并开始直接在 {} 中包含成员变量的声明,即

Bloke(){age=24;}
int age;

甚至在构造函数中的类之外单独。有人可以解释一下这是否是错误的吗?谢谢。

不,

这没有错,直到 c++11 之前,这是唯一的方法。然而,大多数人会认为第一种方法对于 c++11 来说更容易、更习惯,它被称为构造函数委托。在 c++11 中,您还可以对某些类型进行内联初始化,如下所示:

class Bloke
{
   public:
   Bloke():{}
   int age = 24;
};

年龄的值将为 24,除非您在其他地方为所有初始化的对象更改它。IMO 构造函数委派应用于任何适用的情况,并保存构造函数的主体以进行额外工作。