成员对象声明的差异

时间:2013-10-09 01:52:19

标签: c++ declaration

这可能是一个非常基本的问题,但我从来没有理解它。当我声明成员变量时,我通常在一个类

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

所以,我通常在分号后用“membera(),memberb()”等声明成员变量。随着时间的推移,我有点懒,并开始在{}中直接包含成员变量的声明,即

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

甚至在构造函数中的类之外。有人可以解释一下这是不是错了吗?感谢。

1 个答案:

答案 0 :(得分:0)

不是没有错,直到c ++ 11才是唯一的方法。然而,大多数人会考虑第一种方式更简单,更习惯于c ++ 11,它被称为构造函数委托。在c ++ 11中,您还可以对某些类型进行内联初始化:

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

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