- 普通的和委托的区别是:同一个类,多个类之间【派生类-基类】
- 普通的和继承构造的区别:是否要手动指明
// 1. 派生类显示调用基类构造函数初始化
class A {
public:
A(int x, int y) {
std::cout << "A(x, y) called" << std::endl;
}
};
class B : public A {
public:
B(int a, int b, int c) : A(a, b) { // 手动调用A的构造函数
std::cout << "B(a, b, c) called" << std::endl;
}
};
int main() {
B obj(1, 2, 3);
}
// 特点:手动指定基类的构造函数,不能自动继承构造。
// 2. C++11, 使用using自动继承基类的构造函数
class A {
public:
A(int x, int y) { }
};
class B : public A {
public:
using A::A; // 继承基类A的构造函数
};
int main() {
B obj(1, 2); // 直接使用A的构造函数
}
// 特点:自动继承构造函数,不需要显式初始化基类。
// 3. C++11, 委托构造:在同一个类中,一个构造函数调用另一个构造函数
class A {
int m_a, m_b;
public:
A(int x, int y) : m_a(x), m_b(y) {
cout << "A(int, int)" << endl;
}
// 委托构造:委托给 A(int, int) 进行初始化
A(int x, int y, const string& str) : A(x, y) {
cout << "str = " << str << endl;
}
};
// 特点:同类中不同构造函数之间的复用,适合代码共享。
标签:委托,int,派生类,构造,基类,构造函数
From: https://www.cnblogs.com/albertmak/p/18469579