-----构造函数体赋值 ----初始化 --前奏 各位好友, 下面函数体 对类 对象 赋初始值 行为, 是不可以称为 初始化成员对象 ! 因 初始化行为有且只能有一次, 而函数体类 --内部赋值 可
----->构造函数体赋值
---->初始化 -->前奏
各位好友, 下面函数体 对类 对象 赋初始值 行为, 是不可以称为 初始化成员对象 !
因 初始化行为有且只能有一次, 而函数体类 -->内部赋值 可以多次进行 !
---->初始化 -->开启
#include <iostream>
using std::cout;
using std::endl;
// 初探 函数体赋值 --->初始化列表
class Date
{
public:
Date(int year = 2018, int month = 05, int day = 07)
:_year(year)
,_month(month)
,_day(day) // 要注意格式书写
{}
void Print()
{
cout << _year << " - " << _month << " - " << _day << endl << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
d1.Print();
return 0;
}
为了好友们, 有更好地观感体验, 与更好地理解 ! 现 附上有彩色的代码图样 :>
----->解析 初始化列表 :>
---->初始化列表 :以一个冒号开始, 接着 以一个逗号进行分割 --->数据成员列表, 每一个 “成员变量” 后面跟着一个放在括号中的初始化值或者表达式 !
下面,进行 最为重要的特性 分析 :>
1. 每一个成员变量在初始化列表中只能出现一次(初始化有且只能初始化一次)
2. 类中成员, 必须放在初始化列表位置进行初始化:>
A. 引用成员变量;
B. const 成员变量;
C. 自定义类型成员(且该类中没有默认构造函数)
----->验证 初始化列表特性 :>
----->优化版本 :>
---->调试环节 :>
各位好友,此处的 自定义类型对象, 博主无法打印出来 !但还是, 能经过调试直观反映出来 !
----->此处 自定义类型对象, 没有默认构造函数, 需要进行赋值操作;有默认构造函数的前提下, 会去调用它自己的默认构造函数 !
------>初始化列表优先级高于缺省值
---->验证 :>
各位好友, 上述代码模块, 请注意 --->标注区域 !
---->有关于 “ ret ” 随机值 ! 好友们 !可以这么想 -->既然 指针都有野指针, 那么引用也可以有 “ 野引用 ”
其实, 这只是为了方便理解, 特别起了这么一个 “ 叫法 ”