C++ 初始化列表详解及实例代码
在 C++ 中,当我们定义一个类或结构体时,我们可以使用初始化列表来初始化类或结构体的成员变量。初始化列表提供了一种高效的方式来初始化类或结构体成员变量,特别是在初始化对性能要求很高的类时。
什么是初始化列表
初始化列表是一种用于初始化类或结构体成员变量的语法结构。通过初始化列表,我们可以在构造函数中以一种简洁和高效的方式初始化成员变量。
为什么使用初始化列表
-
提高效率:使用初始化列表比在构造函数中为成员变量赋值要更高效,因为这样可以避免在构造函数中进行一次初始化时,在编译时将成员变量初始化两次(一次使用默认的构造函数初始化,一次在构造函数中为其赋值)。另外,初始化列表可以更好地处理 const 类型的成员变量。
-
必要性:有些成员变量必须在构造函数中进行初始化。例如,const 成员变量必须在初始化列表中进行初始化。
初始化列表的基本语法
初始化列表使用冒号来分隔,紧跟在冒号后的是成员变量名和初始化值之间用逗号分隔的序列。
class Myclass {
private:
int x;
double y;
char* z;
public:
// 构造函数使用初始化列表来初始化成员变量
Myclass(int a, double b, char* c) : x(a), y(b), z(c) {
// 构造函数的主体部分(如果需要的话)
}
};
在上面的示例代码中,Myclass 类有三个成员变量:int 类型的 x,double 类型的 y 和 char* 类型的 z。构造函数使用初始化列表来初始化这三个成员变量。初始化列表中的顺序必须与成员变量的声明顺序相同。
示例1:使用初始化列表初始化 const 成员变量
class Circle {
private:
const double PI;
double radius;
public:
// 构造函数使用初始化列表来初始化 const 成员变量 PI 和普通成员变量 radius
Circle(double r) : PI(3.14159265358979323846), radius(r) {
// 构造函数的主体部分(如果需要的话)
}
// 获取圆的周长
double getCircumference() {
return 2 * PI * radius;
}
};
在上面的示例代码中,Circle 类有两个成员变量:const double 类型的 PI 和 double 类型的 radius。使用初始化列表初始化 const 成员变量 PI 和普通成员变量 radius。
示例2:使用初始化列表初始化对象成员变量
class Person {
private:
string name;
int age;
public:
// 构造函数
Person(string n, int a) : name(n), age(a) {}
// 获取人的名字
string getName() {
return name;
}
// 获取人的年龄
int getAge() {
return age;
}
};
class Student {
private:
Person p; // 对象成员变量 p
public:
// 构造函数使用初始化列表来初始化对象成员变量 p
Student(string n, int a) : p(n, a) {
// 构造函数的主体部分(如果需要的话)
}
// 获取学生的名字
string getName() {
return p.getName();
}
// 获取学生的年龄
int getAge() {
return p.getAge();
}
};
在上面的示例代码中,Person 类有两个成员变量:string 类型的 name 和 int 类型的 age。在 Student 类中,有一个对象成员变量 p,它是一个 Person 类的对象。使用初始化列表来初始化 Person 类的对象成员变量 p。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 初始化列表详解及实例代码 - Python技术站