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;
}
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()去掉!
时间函数