如何初始化类中的成员变量
时间: 2024-10-11 18:18:08 浏览: 6
在 C++ 中,类中的成员变量可以通过几种方式进行初始化:
1. **默认初始化**(Member Variables without Initializer):
当没有指定初始值时,基本数据类型的成员变量会被隐式地设置为它们的默认值(例如,整数为0,浮点数为0.0等),而引用、指针、对象则通常会设置为 `nullptr` 或空的对象。
```cpp
class MyClass {
public:
int myInt; // 默认初始化为0
// ...
};
```
2. **赋值初始化**(Initialization with a Value):
直接在声明时给成员变量赋值,这被称为初始化列表。
```cpp
class MyClass {
public:
MyClass() : myInt(10), myString("Hello") {} // 使用初始化列表
int myInt; // 赋值为10
std::string myString; // 赋值为"Hello"
};
```
3. **构造函数内初始化**(Initialization in Constructor Body):
也可以在类的构造函数体内部对成员变量进行初始化。
```cpp
class MyClass {
public:
MyClass(int initialValue)
: myInt(initialValue),
myString("Initial String")
{}
int myInt;
std::string myString;
};
```
4. **构造函数外部初始化**(Field Initializers):
C++17 引入了字段初始化,允许在声明时直接初始化成员变量,这称为静态初始化(Static Initialization)。
```cpp
class MyClass {
public:
MyClass() : myInt{10}, myString{"Static Init"} {}
static int myInt; // 静态变量
std::string myString;
};
MyClass::myInt = 0; // 初始化静态变量
```
注意:对于复杂的结构或动态分配内存的变量,通常在构造函数中完成初始化以保证资源管理的正确性。