📅  最后修改于: 2023-12-03 15:21:02.587000             🧑  作者: Mango
在 C++ 中,在创建一个对象之后,我们可以以不同的方式对其进行初始化。C++ 中的初始化程序可以在对象创建时对其值进行初始化,这样可以避免在程序运行时产生未定义行为。下面介绍几种常用的初始化方式。
默认构造函数是没有参数的构造函数,用于创建对象时将其成员变量初始化为默认值。
class Person {
public:
Person() {
name = "";
age = 0;
}
std::string name;
int age;
};
当我们创建一个 Person
对象时,其成员变量 name
和 age
会被分别初始化为 ""
和 0
。
使用列表初始化可以在初始化时一次性对成员变量进行赋值。
class Person {
public:
Person(std::string n, int a) : name(n), age(a) {}
std::string name;
int age;
};
在创建 Person
对象时,可以直接将其成员变量的值以初始化列表传递给构造函数:
Person p("Tom", 20);
这样,p
的成员变量 name
和 age
分别被赋值为 "Tom" 和 20。
使用成员初始化列表可以在构造函数中对基类和成员变量进行初始化。
class Animal {
public:
int legs;
};
class Dog : public Animal {
public:
Dog() : Animal(), name(""), age(0) {}
std::string name;
int age;
};
在上述示例中,Dog
类继承自 Animal
类,且有两个成员变量 name
和 age
。在 Dog
类的构造函数中,我们使用成员初始化列表对其成员变量进行了初始化。
对于静态变量,我们可以使用初始化表达式对其进行初始化。
class Animal {
public:
static int num;
Animal() {
num++;
}
};
int Animal::num = 0;
在上述示例中,Animal
类有一个静态变量 num
,代表 Animal
类型对象的数量,每创建一个 Animal
类型对象时,num
的值就会增加 1。
在静态变量的定义中,我们将 num
初始化为 0。这样,在程序运行时,程序会自动调用其构造函数对其进行初始化。
对于普通变量,我们可以在创建对象时使用构造函数进行初始化。
class Animal {
public:
Animal(int l) {
legs = l;
}
int legs;
};
int main() {
Animal a(4);
}
在上述示例中,Animal
类有一个 legs
成员变量,在创建 Animal
对象时,我们使用构造函数将其值初始化为 4。
以上是 C++ 中的一些常用初始化方式,它们可以保证程序在运行时不产生未定义行为,提高程序的稳定性和可靠性。