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