#include <iostream>
class Date {
public:
/* 无参构造函数 */
Date() {
_year = 0;
_month = 1;
_day = 1;
}
/* 带参构造函数 */
Date(int year, int month, int day) {
_year = year;
_month = month;
_day = day;
}
Date(int year = 2002, int month = 1, int day = 1)
:_year(year)
,_month(month)
,_day(day)
{}
void Print() {
printf("%d-%d-%d\n", _year, _month, _day);
}
private:
int _year;
int _month;
int _day;
};
int main(void)
{
Date d1; // 对象实例化,此时触发构造,调用无参构造函数
d1.Print();
Date d2(2022, 3, 9); // 对象实例化,此时触发构造,调用带参构造函数
d2.Print();
return 0;
}
#include <iostream>
class Date {
public:
Date(int year = 0, int month = 1, int day = 1) {
_year = year;
_month = month;
_day = day;
}
/* Date d2(d1); */
Date(Date& d) { // 这里要用引用,否则就会无穷递归下去
_year = d._year;
_month = d._month;
_day = d._day;
}
void Print() {
printf("%d-%d-%d\n", _year, _month, _day);
}
private:
int _year;
int _month;
int _day;
};
int main(void)
{
Date d1(2022, 3, 9);
Date d2(d1); // 拷贝复制
// 看看拷贝成功没
d1.Print();
d2.Print();
return 0;
}