一道C++问题,急~

这是头文件:date.h#include<iostream>usingnamespacestd;classDate{private:intmonth;intday;int... 这是头文件:date.h
#include <iostream>
using namespace std;
class Date
{
private:
int month;
int day;
int year;
public:
Date(int m=1,int d=1,int y=2005);
Date(int,int);
Date(int);
Date();
void display();

};

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=0;day=0;year=0;}

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

这是主文件:
#include <iostream>
#include "date.h"
Date d1(10,13,2005),d2(12,30),d3(10),d4;
int main()
{
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}

请问怎么改?!
展开
 我来答
呼啸长风2020
2011-03-26 · TA获得超过272个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:171万
展开全部
#include "stdafx.h"

#include <iostream>
using namespace std;
class Date
{
private:
int month;
int day;
int year;
public:
Date(int ,int ,int );
Date();
void display();
};

Date::Date(){month=0;day=0;year=0;}
Date::Date(int m,int d=1,int y=2005):month(m),day(d),year(y) {}

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

Date d1(1,13,2005),d2(12,30),d3(10),d4;
int main()
{
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}
/*定义了Date(int m=1,int d=1,int y=2005);就不能再定义Date::Date(int m,int d)了
假如你如此定义对象Date d2(12,30),系统是调用缺省值构造函数Date(int m=1,int d=1,int y=2005);
还是“重载的Date::Date(int m,int d)”?

如果你写了以下重载函数,声明对象时全是这种形式Date d1(10,13,2005)(带三个实参的)
那也会编译过的,不过还是不要写Date::Date(int m,int d)为好,因为没用。

如果真的要写重载构造函数,可以如此:
Date::Date(){month=0;day=0;year=0;}
Date(int m,int d=1,int y=2005}:day(d),year(y) {month=m;}
m没有默认值,定义无参对象会调用Date()*/
中智咨询
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。... 点击进入详情页
本回答由中智咨询提供
zengfujun271
2011-03-26 · TA获得超过192个赞
知道答主
回答量:124
采纳率:0%
帮助的人:170万
展开全部
你的函数重复定义了。就是类里面的构造函数。
Date(int m=1,int d=1,int y=2005);
后面所有的类型都在这个函数里面。
像Date(int ,int)这个,当传递两个实参的时候,前面那个函数也符合(读入两个参数,最后面的参数为默认值2005),后面这个函数也符合,有矛盾,这是不行的。
追问
那应该怎么改呢?这道题考察的就是函数重载和默认参数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秀米CN
2011-03-26 · TA获得超过362个赞
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:164万
展开全部
楼上说的对,这会出现函数调用的二义性,记得好像只能去掉默认参数了。
另外楼主最后的构造函数
Date::Date():
{month=0;day=0;year=0;}
中Date(): 的冒号应该去掉,不然不能运行。
希望我的回答能帮到你,另外如果楼主愿意的话可以到我的论坛逛逛,不过由于还是刚建,所以
资料还比较少,希望见谅。地址:xiaoleikz.tk
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式