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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,549评论 9 118
  • C++11的新特性具有广泛的可用性,可以与其他已有的,或者新增的语言特性结合起来进行自由的组合,或者提升已有特性的...
    认真学计算机阅读 5,457评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,571评论 18 399
  • 1.星空下只有我和你 最喜欢这句“你在我心上 上下十方 永远是万里眼中明”提灯等你 2.——为什么有些人明明看起来...
    九啊九啊阅读 4,795评论 0 1
  • 我居住的小县城有一条望不到头的路,两旁种着很多古老的垂柳树,不知道有多少个年头,年年春末夏初柳絮满天飞。...
    唯妙唯肖阅读 1,877评论 0 2

友情链接更多精彩内容