在C++中,类的成员变量可以在声明时进行初始化,也可以在构造函数中进行初始化。
它们之间有一些区别:
声明初始化:成员变量的声明初始化是在类的声明中为成员变量提供默认值。这样,无论通过哪个构造函数创建对象,成员变量都会使用相同的默认值。声明初始化使用等号(=)和初始值的形式来完成。
class MyClass {
public:
int myInt = 0; // 成员变量声明初始化
};
构造函数初始化:成员变量的构造函数初始化是在类的构造函数中为成员变量提供初始值。这允许根据不同的构造函数参数设置不同的初始值。构造函数初始化使用初始化列表(initializer list)来完成。
class MyClass {
public:
int myInt; // 成员变量声明
bool myBool; // 成员变量声明
MyClass() : myInt(0) { myBool = true; } // 构造函数初始化
// 构造函数初始化,初始化列表根据参数设置不同的初始值
MyClass(int value) : myInt(value) { myBool = false; }
// 构造函数初始化,不同构造函数设置不同初始值
MyClass(int value) : myInt(value) { myBool = true; }
};
在实际使用中,如果成员变量的初始值是固定的,且不会根据不同的构造函数参数而改变,可以使用声明初始化。
如果成员变量的初始值需要根据不同的构造函数参数而改变,可以使用构造函数初始化。