我们在写类的构造函数的时候, 有时候一个构造函数可以完成另一个构造函数中的一部分内容, 这时候我们就希望调用另一个构造函数, 减少代码冗余.
C++11 中提供了委托构造函数帮助我们实现这一功能.
示例代码
#include <iostream>
#include <string>
#include <vector>
using std::string;
using std::vector;
class A {
public:
A();
A(string s);
void foo();
protected:
vector<string> v;
};
A::A() {
v.push_back("This is A()");
}
A::A(string s) : A() {
v.push_back("This is A(string s)");
v.push_back(s);
}
void A::foo() {
for (auto i : v) {
cout << i << endl;
}
}
int main() {
A a("holo");
a.foo();
return 0;
}
结果
<pre>
This is A()
This is A(string s)
holo
</pre>
需要C++ 11 以上支持
delegating constructors are permitted only in C++11