深入探索构造函数

来源:互联网 发布:卓智网络 锐捷 拉萨 编辑:程序博客网 时间:2024/06/01 10:49

构造函数的初始化问题

大致分为以下几类:

( 1 )全缺省参数初始化, 不用传参。
(2)半缺省参数初始化, 只需传部分参数。
(3)无缺省参数初始化,定义多少个成员变量,传多少个参数。
(4)使用初始化列表初始化,此类初始化更加高效,建议初始化的顺序与声明的顺序相同。
首先定义一个日期类如下:

class Date{public:    //全缺省参数    Date(int year=2017, int month=7, int day=1)    {    _year = year;    _month = month;    _day = day;}    //半缺省参数    {    Date(int year, int month=1, int day=1)    {    _year = year;    _month = month;    _day = day;}    //无缺省参数    {    Date(int year, int month, int day)    {    _year = year;    _month = month;    _day = day;}    //初始化列表初始化    {    Date(int year, int month=1, int day=1)    :_year(year)    ,_month(month)    ,_day(day)    {}private:int _year;int _month;int _day;};void TestDate(){    Date d1();    Date d2(2018);    Date d3(2017, 7, 1);}

思考为什么初始化列表更加的高效?

因为使用初始化列表相当于在声明变量的时候就初始化了,省去了传参过程中的开销,因此会更加的高效,而且使用初始化列表进行初始化的顺序与声明变量的顺序是相同的,因此建议初始化列表初始顺序与声明顺序一致。

阅读全文
0 0
原创粉丝点击