成员对象声明的差异
difference in declaration of member objects
这可能是
一个非常基本的问题,但我从来没有正确理解它。当我声明通常在类中执行的成员变量时
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 构造函数委派应用于任何适用的情况,并保存构造函数的主体以进行额外工作。
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何在C++中获取该对象的类声明中对象的地址?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- 如何为非类型模板声明指向对象的指针?
- 如何从不同的类中获取函数来调用在 Main 中声明的对象?
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 有什么方法可以在标头中定义和声明 extern 对象吗?
- 如何使用模板声明成员函数?(不是模板类)
- 如何使用 Boost.Hana 声明成员变量
- C++是否有定义的方法来传递指向类的成员对象的成员函数的指针
- 声明成员对象而不调用其默认构造函数
- 只有当声明一个对象时,内存空间才会分配给类的数据成员,那么为什么 Sizeof(class_name) 给我结果
- 如何在声明时间内启动成员对象
- C :如何声明私人成员对象
- 成员对象声明的差异
- C++ 声明类的 const 成员对象
- 试图在c++中声明一个成员对象
- 可以在对象函数上使用decltype声明成员变量吗?
- 指向成员对象的成员指针和声明顺序