复制
class Base {
public:
Base(int x) { std::cout << "Base: " << x << std::endl; }
};
class Derived : public Base {
std::string name;
public:
// 初始化列表:先构造 Base,再初始化 name
Derived(int x, std::string n) : Base(x), name(n) {
std::cout << "Derived: " << name << std::endl;
}
};
int main() {
Derived d(42, "Alice");
// 输出:
// Base: 42
// Derived: Alice
}
为什么这样设计?
- 确保基类先初始化:C++ 要求派生类构造时必须先构造基类。
- 性能优化:避免先默认初始化再赋值的冗余操作(尤其对复杂对象)。
- 不可变性:某些成员(如
const
或引用)必须通过初始化列表赋值。