C++2.0

C++ 类内构造函数调用另一个构造函数(委托构造函数)

2016-11-01  本文已影响348人  百分之百的大风

我们在写类的构造函数的时候, 有时候一个构造函数可以完成另一个构造函数中的一部分内容, 这时候我们就希望调用另一个构造函数, 减少代码冗余.
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

参考

MSDN 构造函数 - 委托构造函数

上一篇 下一篇

猜你喜欢

热点阅读