在C++98中,类成员变量的就地声明通常需要在构造函数中进行初始化。
class MyClass {
public:
// C++98 中的类成员变量声明
int myVariable;
// 构造函数中初始化
MyClass() {
myVariable = 0;
}
};
并且,C++98对类中就地声明要求非常高,如果不是整型或者枚举型的静态常量成员,就不可以就地声明,必须在构造函数中进行。
C++11引入了成员初始化列表,使得在类定义中直接初始化成员变量成为可能
class MyClass {
public:
// C++11 中的类成员变量就地声明
int myVariable = 0;
// 不再需要构造函数中初始化
// 构造函数可以为空
MyClass() = default;
};
C++11中,允许使用等号=或者花括号 { } 进行就地非静态成员变量的初始化。
class MyClass {
public:
// 使用等号进行就地初始化
int myVariable1 = 42;
// 使用花括号进行就地初始化
double myDouble{3.14};
// 构造函数为空,不需要在其中初始化成员变量
// 示例成员函数
void displayValues() {
std::cout << "myVariable1: " << myVariable1 << std::endl;
std::cout << "myDouble: " << myDouble << std::endl;
}
};