相关的代码:
无参构造函数 & 有参构造函数
#include <iostream>
using namespace std;
class Date
{
public:
Date()
{
cout<<"无参构造函数"<<endl;
}
Date(int year,int month,int day)
:_year(year)
,_month(month)
,_day(day)
{
cout<<"有参构造函数"<<endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
Date d2(2018,8,8);
return 0;
}
半缺省参数构造函数
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year,int month = 1,int day = 30)
:_year(year)
,_month(month)
,_day(day)
{
cout<<"半缺省参数构造函数"<<endl;
}
void Display()
{
cout<<_year<<"-"<<_month<<"-"<<_day<<endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d2(2018);
d2.Display();
Date d3(2018,8);
d3.Display();
return 0;
}
全缺省参数构造函数
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year = 1997,int month = 1,int day = 30)
:_year(year)
,_month(month)
,_day(day)
{
cout<<"全缺省参数构造函数"<<endl;
}
void Display()
{
cout<<_year<<"-"<<_month<<"-"<<_day<<endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
d1.Display();
Date d2(2018,8,8);
d2.Display();
Date d3(2018,8);
d3.Display();
return 0;
}
拷贝构造函数—是构造函数的重载
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year,int month = 1,int day = 30)
:_year(year)
,_month(month)
,_day(day)
{
cout<<"半缺省参数构造函数"<<endl;
}
Date( const Date& d )
{
cout<<"拷贝构造函数"<<endl;
_year = d._year;
_month = d._month;
_day = d._day;
}
void Display()
{
cout<<_year<<"-"<<_month<<"-"<<_day<<endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d2(2018);
d2.Display();
Date d3(d2);
d3.Display();
return 0;
}
在类外定义构造函数
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year = 1997,int month = 1,int day = 30);
Date( Date &d )
{
cout<<"拷贝构造函数"<<endl;
_year = d._year;
_month = d._month;
_day = d._day;
}
Date& operator= (const Date &d)
{
if( this != &d )
{
_year = d._year;
_month = d._month;
_day = d._day;
}
return *this;
}
void Display()
{
cout<<_year<<"-"<<_month<<"-"<<_day<<endl;
}
~Date()
{}
private:
int _year;
int _month;
int _day;
};
Date::Date(int year ,int month,int day )
:_year(year)
,_month(month)
,_day(day)
{
cout<<"半缺省参数构造函数"<<endl;
}
int main()
{
Date d2;
d2.Display();
Date d3;
d3 = d2;
d3.Display();
return 0;
}