C++-委托构造

委托构造

C++11 引入了委托构造的概念,这使得构造函数可以在同一个类中一个构造函数调用另一个构造函数,从而达到简化代码的目的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
class Base {
public:
int value1;
int value2;
Base() {
value1 = 1;
}
Base(int value) : Base() { //委托Base()构造函数
value2 = value;
}
};
int main()
{
Base b(2);
std::cout << b.value1 << std::endl; //1
std::cout << b.value2 << std::endl; //2
}

注意

当构造函数过多时,我们可能拥有多个委托构造函数,而这一目标可能会引发环形委托关系,需要注意。