C++委托构造函数
C++11新标准扩展了构造函数初始值的功能,使得我们可以定义所谓的委托构造函数(delegating constructor)。一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或者说它把它自己的一些职责(或者全部)职责委托给了其他构造函数。
和其他构造函数一样,一个委托构造函数也有一个成员初始值的列表和一个函数体。
#include<iostream>
using namespace std;
class Date
{
public:
//非委托构造函数使用对应的实参初始化成员
Date(int year,int month,int day):_year(year), _month(month), _day(day)
{
cout << "正在调用非委托构造函数Date(int year,int month,int day)!"
<< endl << endl;
}
Date(int month,int day):Date(2019,month,day)
{
cout << "正在调用Date(int month,int day)委托构造函数!" << endl << endl;
}
Date(int day):Date(2019,11,day)
{
cout << "正在调用Date(int day)委托构造函数!" << endl <<endl;
}
friend ostream &operator<<(ostream &os, Date const date1)
{
return os << "year = " << date1._year << endl <<"month = " << date1._month<< endl << " day = " << date1._day <<endl;
}
private:
int _year;
int _month;
int _day;
};
void FunTest()
{
Date d(3);
cout << d;
cout << "==============================================" << endl;
Date a(1997,10,16);
cout << a;
cout << "==============================================" << endl;
Date t(11,15);
cout << t;
}
int main()
{
FunTest();
system("pause");
return 0;
}
结果如下: