c++题目,带默认参数的构造函数

来源:百度知道 编辑:UC知道 时间:2024/06/12 11:09:46
#include<iostream.h>

class date{
public:
date(int=1,int=1,int=2005);
//如果我也要保留上面的语句,要得程序的四个正确结果,下面应该怎么改?
date(int,int);
date(int);
date();
void display();
private:
int month;
int day;
int year;
};

date::date(int m,int d,int y):month(m),day(d),year(y){}

date::date(int m,int d):month(m),day(d){year=2005;}

date::date(int m):month(m){day=1;year=2005;}

date::date(){month=1;day=1;year=2005;}

void date::display(){
cout<<month<<"/"<<day<<"/"<<year<<endl;}

int main()
{
date d1(10,13,2005);
date d2(12,30);
date d3(10);
date d4;
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}

这几位都说的对,你那想法完全就是扯淡。这叫接口重复定义。

//欢迎在线讨论

date(int=1,int=1,int=2005);
改为
date(int m,int d,int y);

date(); 和date(int=1,int=1,int=2005); 这两个是让编译器分辨不出来的,差不多也就是重复定义吧,因为后面的带默认参数,在调用的时候可以不带参数,所以,电脑不知道到底是默认构造函数,还是带默认参数的构造函数,解决办法是可以把date()去掉!

时间函数