读书人

构造函数-重载和有默认参数 同时出现的

发布时间: 2013-04-21 21:18:07 作者: rapoo

构造函数-重载和有默认参数 同时出现的问题
代码附后,
问题 : 造成这种错误的原因是什么?


代码如下
#include <iostream>
using namespace std;

class Date
{
public:
Date(int=1,int=1,int=2005); // 此行改成 Date(int,int,int); 就顺利通过
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 d4;时
由于你提供了默认的参数
所以编译器不知道这里是用
Date();还是Date(int=1,int=1,int=2005); 去构造这个对象

读书人网 >C++

热点推荐