构造函数的重载


构造函数用于创建了一个对象,提供了初始该对象的一种简便手段


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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值