委托构造函数允许使用同一个类中的一个构造函数调用其他的构造函数,从而简化相关变量的初始化。

注意点:

1.这种链式的构造函数调用不能形成一个闭环(死循环),否则会在运行期抛异常。

2.如果要进行多层构造函数的链式调用,建议将构造函数的调用写在初始化列表中而不是函数体内部,否则编译器会提示形参的重复定义。

3.在初始化列表中调用了代理构造函数初始化某个类成员变量之后,就不能在初始化列表中再次初始化这个变量了。

代码如下:

#include <iostream>
using namespace std;class Test
{public:Test(){}Test(int a){cout << a << endl;}Test(int a, int b){cout << a << endl;//跟Test(int a)中的代码一样cout << b << endl;}Test(int a, int b, int c){cout << a << endl;//跟Test(int a,int b)中的代码一样cout << b << endl;//跟Test(int a,int b)中的代码一样cout << c << endl;}int a;int b;int c;};

委托构造函数
代码如下:

#include <iostream>
using namespace std;class Test
{public:Test(){}Test(int a){cout << a << endl;}Test(int a, int b):Test(a){cout << b << endl;}Test(int a, int b, int c) :Test(a, b){cout << c << endl;}int a;int b;int c;};int main()
{int a = 2;int b = 1;int c = 3;Test t(a);cout << "---------------" << endl;Test t1(a, b);cout << "---------------" << endl;Test t2(a, b, c);cout << "---------------" << endl;return 0;
}

测试结果:

在初始化列表中调用了代理构造函数初始化某个类成员变量之后,就不能在初始化列表中再次初始化这个变量了。

[C++11]委托构造函数相关推荐

  1. C++11 委托构造函数

    1.简介 委托构造函数(Delegating Constructor)由 C++11 引入,是对 C++ 构造函数的改进,允许构造函数通过初始化列表调用同一个类的其他构造函数,目的是简化构造函数的书写 ...

  2. C++11:委托构造函数

    前言 如果一个类中重载了多个构造函数,并且在每个构造函数中都需要对某些变量进行初始化,这时候就会出现很多重复的代码,在C++11之前存在这个问题.而C++11中新增的委托构造函数,就是为了解决这个问题 ...

  3. 委托构造函数继承构造函数

    委托构造函数 委托构造函数的引入 小明和李华给外国友人写信从高中写到了考研写累了,突然想唱歌,为了方便这哥俩唱歌,咱写了个唱歌类给他们.这哥俩唱的不好,就限制他俩只能唱三句.因为有1~3句的选择,就写 ...

  4. C++进阶教程 - 委托构造函数和继承构造函数

    委托构造函数 什么是委托构造函数? 委托构造函数是由C++11引入的新概念,是对C++构造函数的改进,允许构造函数使用初始化列表调用同类中的其他构造函数,旨在简化构造函数的书写,提升代码的可维护性,降 ...

  5. C++构造函数之委托构造函数

    今天在读<C++Primer>时读到委托构造函数一节,书中关于委托构造函数是这样描述的: 一个委托构造函数使用它所属的类的其他构造函数执行自己的初始化过程,或者说它把自己的一些(或者全部) ...

  6. [C++11]继承构造函数

    C++11中提供的继承构造函数可以让派生类直接使用基类的构造函数,而无需自己再写构造函数,尤其是在基类有很多构造函数的情况下,可以极大地简化派生类构造函数的编写. 先来看没有继承构造函数之前的处理方式 ...

  7. C++11 继承构造函数

    1.简介 子类为完成基类初始化,在 C++11 之前,需要在初始化列表调用基类的构造函数,从而完成构造函数的传递.如果基类拥有多个构造函数,那么子类也需要实现多个与基类构造函数对应的构造函数. cla ...

  8. C++11 委派构造函数

    一 委派构造函数 <深入理解C++11> 委派构造:就是指委派函数将构造的任务派给了目标构造函数来完成这样一种类构造的方式. C++11中的委派构造函数是在构造函数的初始化列表位置进行构造 ...

  9. C++11移动构造函数详解

    这里写目录标题 拷贝构造函数 修改后的拷贝构造函数 移动构造函数 移动构造函数的优点 当类中同时包含拷贝构造函数和移动构造函数时,如果使用临时对象初始化当前类的对象,编译器会优先调用移动构造函数来完成 ...

最新文章

  1. 你知道实习对你有多重要吗?
  2. Go语言中的Struct
  3. java中array_Java 中的array数组总结之一
  4. 小米宋强:生态化大数据平台的深度应用实践
  5. python在ubuntu执行sh脚本,提示权限不够的解决方法, 转载
  6. 二十年来一直没搞清楚的一个问题
  7. 3D打印技术在医疗领域能做些什么?帮助精确完成手术
  8. mysql整除、取余、四舍五入
  9. iOS的5种图片缩略技术以及性能探讨
  10. v$session.sql_id为NULL或不准确的BUG
  11. 用Linux给手机刷rec,【小白福利】手机端刷入第三方Rec,手把手教会你
  12. 3dmax9.0 简体中文正式版(官方非汉化版本)下载网址
  13. 扫读笔好还是点读笔好 有什么区别
  14. tar压缩和解压文件或文件夹
  15. struct和class异同
  16. 转:数据之美:迄今 10 佳数据可视化示例
  17. Windows防火墙添加禁用规则——以禁用微信为例
  18. 网站下载工具有哪些?
  19. js 对象的解构赋值
  20. QQ 浏览器(iOS版)崩溃信息研究

热门文章

  1. LeetCode之Sqrt(x)
  2. Android插件化开发之动态加载技术简单易懂的介绍方式
  3. 六、WebApp 二手信息站点页面制作(IVX 快速开发教程)
  4. 华为ar2200路由器 策略路由_路由交换篇 06 华为路由器RIP协议的配置
  5. 云计算及应用课程知识整理
  6. html拖放数据库字段,HTML5 拖放(Drag 和 Drop)
  7. mysql查看日志命令_面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器!
  8. 太漂亮了!66个高颜值的矿物晶体,吸引到你的目光了吗
  9. 中小学将逐步推广编程教育;勒索病毒攻击部分政府部门和医院;国内外药企密集调价;微软要给Win7用户推死亡通知,这就是今天的大新闻...
  10. python self 值自动改变,在python中对self的理解