拷贝构造函数:形参为对象的引用例:当遇到声明Date(Date&d)1Datedate2(date1);year=d.year;时,编译器自动调用month=d. month;构造函数day=d.day;Date::Date(Date&d)用date1初始化date215
拷贝构造函数:形参为对象的引用 例: Date(Date &d) { year=d. year; month=d. month; day=d.day; } 15 当遇到声明 Date date2(date1); 时,编译器自动调用 构造函数 Date:: Date(Date &d), 用date1初始化date2
2.在构造函数的头部初始化其格式为<类名><构造函数>(<参数表>):<变量1>(<初值1>),.,<变量n>(<初值n>)例如Date:Date(int yy, int mm, int dd) : year(yy), month(mm), day(dd)16
16 2.在构造函数的头部初始化 其格式为: <类名>::<构造函数>(<参数表>) : <变量1>(<初值1>), ., <变量n>(<初值n>) { . } 例如 Date::Date(int yy, int mm, int dd) : year(yy), month(mm), day(dd) { . }
3.混合初始化例如Date:Date() : year(1990), month(1)[ day=1;})17
17 3.混合初始化 例如 Date::Date() : year(1990), month(1) { day=1;}
4.使用默认参数初始化创建对象:例:Date date1(2006);classDateint day,month,year;Date date2(2006,3);public:Datedate3(2006,3,6):Date(int yy, int mm=1, int dd=1)则初始值分别为:{year=yy; month=mm;day=dd;)date1 : 2006,1,1注:1、用户不指定实参值时,则形date2 : 2006,3,1参取默认值;date3 : 2006,3,62、相当于多个重载的构造函数,参数个数不同。18
4.使用默认参数初始化 例: class Date { int day,month,year; public: Date(int yy, int mm=1, int dd=1) { year=yy; month=mm;day=dd;} }; 注:1、用户不指定实参值时,则形 参取默认值; 2、相当于多个重载的构造函数,参 数个数不同。 18 创建对象: Date date1(2006); Date date2(2006,3); Date date3(2006,3,6); 则初始值分别为: date1:2006,1,1 date2:2006,3,1 date3:2006,3,6