1. 初始化基本数据类型成员变量
使用初始化列表:
Example(int n) : num(n) {}
不使用初始化列表:
Example(int n) {
num = n;
}
在这种情况下,两种方式的效果是一样的,但是使用初始化列表更加简洁和高效。
2. 初始化对象类型成员变量
使用初始化列表:
Point(int a, int b) : x(a), y(b) {}
Rectangle(int x1, int y1, int x2, int y2) : topLeft(x1, y1), bottomRight(x2, y2) {}
不使用初始化列表:
Point(int a, int b) {
x = a;
y = b;
}
Rectangle(int x1, int y1, int x2, int y2) {
topLeft = Point(x1, y1);
bottomRight = Point(x2, y2);
}
使用初始化列表的方式更加简洁和高效,因为它避免了对象的默认构造和赋值构造,直接在构造函数中进行初始化。
3. 初始化引用类型成员变量
使用初始化列表:
Example(int &r) : ref(r) {}
不使用初始化列表:
Example(int &r) {
ref = r;
}
在这种情况下,必须使用初始化列表来初始化引用类型成员变量,因为引用在创建时必须初始化,而不能在构造函数的主体中再次赋值。
4. 初始化常量成员变量
使用初始化列表:
Example() : value(100) {}
不使用初始化列表:
Example() {
value = 100;
}
在这种情况下,必须使用初始化列表来初始化常量成员变量,因为常量在创建后不能再次赋值。
5. 初始化基类
使用初始化列表:
Derived(int n1, int n2) : Base(n1), derivedNum(n2) {}
不使用初始化列表:
Derived(int n1, int n2) : derivedNum(n2) {
Base(n1); // 调用基类构造函数
}
使用初始化列表的方式更加直观和高效,因为它可以显式地调用基类的构造函数,并且避免了默认构造和赋值构造。
6. 初始化成员变量数组
使用初始化列表:
Example() : array{1, 2, 3, 4, 5} {}
不使用初始化列表:
Example() {
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
}
在这种情况下,使用初始化列表更加简洁和高效,因为它可以一次性对数组进行初始化,而不需要逐个赋值。