C++11的委托构造函数 - 技术分享 - 志盟培训
首页技术分享 C++11的委托构造函数

C++11的委托构造函数

更新时间:2017-05-18      作者:何老师       阅读:589

C++11支持委托构造函数。让类的某个构造函数(称为“委托构造函数delegating constructor”)可以在初始化列表中调用同类的另一个构造函数(称为“目标构造函数target constructor”)。即委托构造函数把对象的初始化委托给另一个构造函数,然后再取回控制并执行其它的操作。一个委托构造函数也可以是另一个委托构造函数的目标构造函数。

class A

{

private:

intnum;

string name;

public:

A():A(0,"noname"){}

A(inti,conststring&str){ num=i; name=str; }

   ~A(){}

void display(){ cout<<num<<"  "<<name<<endl; }

};

使用委托构造函数时注意的问题:

1,最多只能有一个目标构造函数。如果在初始化列表中有一个同类的构造函数,则该初始化列表中不能再有其它东西(即不允许有其它基类或数据成员的初始化)。目标构造函数采用通常的重载决议和模板参数推断来选择。

2,目标构造函数还可以再委托给另一个构造函数。如果存在递归循环(如,构造函数C1委托给另一个构造函数C2,而C2又委托给C1),则行为未定义。不要求编译器检查这种情况,因为构造函数可以定义在不同的编译单元中,检查这种递归循环通常要耗费大量的编译时间。当然编译器如果能够进行检查,也是被鼓励的。

3,委托构造函数体中的语句在目标构造函数完全执行后才被执行。目标构造函数体中的局部变量不在委托构造函数体中起作用。

4,对象的生命期从任意一个构造函数执行完毕开始(对于委托构造的情况,就是最终的目标构造函数执行完毕时)。

在线报名

志盟科技上海招聘

在线报名 联系我们

志盟科技深圳招聘

在线报名 联系我们

志盟科技北京招聘

在线报名 联系我们
联系我们

咨询热线:

咨询 QQ:517578         

就业学员

  • 姓名:郭凡凡 
    院校:阜阳师范学院
    就职:佳戴
    职位:软件工程师
    月薪:10000

  • 姓名:陈祥龙 
    院校:中北大学
    就职:美囤妈妈
    职位:软件工程师
    月薪:9000

  • 姓名:陈建伟
    院校:南昌航空大学
    就职:SONY
    职位:嵌入式工程师
    月薪:8000

×
×
  • *真实姓名
  • *联系手机
  • *上课地址
  •    QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。

×
  • *真实姓名
  • *联系手机
  • *联系邮箱
  • * QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一的服务。

本站由 宽敬科技——创新企业的建站运营顾问 提供支持