我們在寫類的構(gòu)造函數(shù)的時候, 有時候一個構(gòu)造函數(shù)可以完成另一個構(gòu)造函數(shù)中的一部分內(nèi)容, 這時候我們就希望調(diào)用另一個構(gòu)造函數(shù), 減少代碼冗余.
C++11 中提供了委托構(gòu)造函數(shù)幫助我們實(shí)現(xiàn)這一功能.
示例代碼
#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;
}
結(jié)果
<pre>
This is A()
This is A(string s)
holo
</pre>
需要C++ 11 以上支持
delegating constructors are permitted only in C++11