委托构造函数

C++11新标准,委托构造函数是为了构造函数减少代码的重复,
经过看过的文章简单粗暴地总结,委托构造函数在类内创建和实现。

#include<iostream>
using namespace std;
class Clock{
    public:
        //定义构造函数
        Clock(int newH,int newM,int newS);
        //委托构造函数在类内声明
        Clock():Clock(5,6,7){};
        //委托构造函数的参数小于或等于被委托的构造函数
        void settime(int newH=0,int newM=0,int newS=0);
        void showtime();
    private:
        int hour,minute,second;
};
void Clock::settime(int newH,int newM,int newS)
{
    hour=newH;
    minute=newM;
    second=newS;
}
void Clock::showtime()
{
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
//构造函数的实现,初始化列表
//直接初始化赋值效率更高,比起在函数体中赋值
Clock::Clock(int newH,int newM,int newS):
hour(newH),minute(newM),second(newS)
{}
int main()
{
    Clock myclock(6,0,0);
    Clock c2;//如果没有默认构造函数就会报错,因为无法初始化
    //4-1没有构造函数也没错是因为在调用时系统自动生成了隐含的默认构造函数
    c2.showtime();
    system("pause");
    return 0;
}

在这里插入图片描述
不使用委托构造函数,就必须对每一个构造函数的功能进行定义

#include<iostream>
using namespace std;
class Clock{
    public:
        //定义构造函数
        Clock(int newH,int newM,int newS);
        Clock();//默认构造函数
        void settime(int newH=0,int newM=0,int newS=0);
        void showtime();
    private:
        int hour,minute,second;
};
void Clock::settime(int newH,int newM,int newS)
{
    hour=newH;
    minute=newM;
    second=newS;
}
void Clock::showtime()
{
    cout<<hour<<":"<<minute<<":"<<second;
}
//构造函数的实现,初始化列表
//直接初始化赋值效率更高,比起在函数体中赋值
Clock::Clock(int newH,int newM,int newS):
hour(newH),minute(newM),second(newS)
{}
//默认构造函数的实现
Clock::Clock():hour(4),minute(44),second(23)
{ }
int main()
{
    Clock myclock(6,0,0);
    Clock c2;//如果没有默认构造函数就会报错,因为无法初始化
    //4-1没有构造函数也没错是因为在调用时系统自动生成了隐含的默认构造函数
    myclock.showtime();
    c2.showtime();
    system("pause");
    return 0;
}

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值