构造函数用于创建了一个对象,提供了初始该对象的一种简便手段
1.构造函数的语法格式:
<类名> (<参数列表>)
{
<函数体>
}
注意:构造函数名必须和类名相同
构造函数没有返回值
其功能是将对象中的所有数据成员进行初始化,一般由赋值语句构成
构造函数
有系统声明对象时自动调用(声明对象之后就可直接赋值)
2.构造函数初始化的四种方法
2.1在构造函数的函数体中初始化
Date(Date &d) //引用
{ year=d.year;
month=d.month;
day=d.day
}
把相同类型给新的同种类型;
2.2在构造函数的头部进行初始化
<类名>::<构造函数名>(<参数列表>):变量1(初值)变量二(初值)
Date::Date():year(1990),month(1),day(22)
{
}
2.3混合初始化
Date::Date(int y,int m,int d):year(y),month(m)
{
day=d;
}
2.4使用默认参数初始化
Date(char yy[],int mm=1;int dd=2)
{
year=atoi(yy); //把字符串转换成整型数
month=mm;
day=dd;
}
#include <bits/stdc++.h>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date(int aa=2018,int bb=5,int cc=26) //默认参数
{
year=aa;
month=bb;
day=cc;
}
Date(char *); //字符串
Date(Date &d); //同类型
void pri_ymd()
{
cout <<year<<" "<<month<<" "<<day<<endl;
}
};
Date::Date(Date &d)
{
year=d.year;
month=d.month;
day=d.day;
}
Date::Date(char *s):year(1999),month(3),day(26)
{
char a[5],b[3],c[3];
strncpy(a,s,4);
s=s+5;
strncpy(b,s,2);
s=s+3;
strncpy(c,s,2);
year=atoi(a);
month=atoi(b);
day=atoi(c);
if(year<1999)
{
year=1999;
return ;
}
if(month>12)
{
year=1999;
month=3;
return ;
}
if(day>31)
{
year=1999;
month=3;
day=26;
return ;
}
}
int main()
{
Date date1;
date1.pri_ymd();
Date date2(2017);
date2.pri_ymd();
char a[15];
cin >>a;
Date date3(a);
date3.pri_ymd();
Date date4(date3);
date4.pri_ymd();
return 0;
}