深入探索构造函数
2017-07-05 17:17
127 查看
构造函数的初始化问题
大致分为以下几类:( 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); }
思考为什么初始化列表更加的高效?
因为使用初始化列表相当于在声明变量的时候就初始化了,省去了传参过程中的开销,因此会更加的高效,而且使用初始化列表进行初始化的顺序与声明变量的顺序是相同的,因此建议初始化列表初始顺序与声明顺序一致。相关文章推荐
- 《深入探索C++对象模型》第二章:构造函数语意学(下)
- 深入探索C++对象模型:第二章构造函数语意学
- 深入探索C++对象模型笔记之三 —— 构造函数语意学 (Default Constructor的建构操作)
- 深入探索C++对象模型之二 --- 构造函数语意学
- 深入探索C++对象模型笔记之四 —— 构造函数语意学 (Copy Constructor的建构操作)
- 深入探索C++对象模型之构造函数扩展
- 初始化列表(深入探索构造函数)
- 深入探索C++对象模型笔记之五 —— 构造函数语意学 (成员们的初始化队伍 Member Initialization List)
- 深入探索C++对象模型 第二章 构造函数语意学
- 深入探索C++对象模型--C++构造函数
- 《深入探索C++对象模型》读书笔记——第二章 构造函数语意学
- 《深入探索C++对象模型》第二章:构造函数语意学(上)
- 【深入探索c++对象模型】c++中构造函数调用虚函数的讨论
- 深入探索透视投影变换
- Neutron 深入探索之 OVS + GRE之完整网络流程
- 《深入探索C++对象模型》第三章奇怪语句解释
- C/C++数组名与指针区别深入探索
- 探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类
- 深入探索Win32结构化异常处理
- 探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 – 聚类