第三章课后习题
第二题
- 题目:
分析下列程序,写出其运行结果。
- 代码:
#include<iostream>
using namespace std;
class Data
{
public:
Data(int,int,int);
Data(int,int);
Data(int);
Data();
void display();
private:
int month;
int day;
int year;
};
Data::Data(int m,int d,int y):month(m),day(d),year(y){
}
Data::Data(int m,int d):month(m),day(d){
year=2005;}
Data::Data(int m):month(m){
day=1;year=2005;}
Data::Data(){
month=1;day=1;year=2005;}
void Data::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;}
int main()
{
Data d1(10,13,2005);
Data d2(12,30);
Data d3(10);
Data d4;
d1.display();
d2.display();
d3.display();
d4.display();
return 0;
}
- 运行如果:
10/13/2005
12/30/2005
10/1/2005
1/1/2005
请按任意键继续...
第三题
- 题目:
如果将第二题中程序的第四行改为默认参数,即
Data(int=1,int=1,int=2005);
分析程序是否有问题。上级编译,分析出错问题,修改程序使之能通过编译。要求保留上面一行构造函数,同时输出与第二题程序相同的结果。 - 代码:
#include<iostream>
using namespace std;
class Data
{
public:
Data(int=1,int=1,int=2005);
// Data(int,int);
// Data(int);
// Data();
void display();
private:
int month;
int day;
int year;
};
Data::Data(int m,int d,int y):month(m),day(d),year(y){
}
//Data::Data(int m,int d):month(m),day(d){year=2005;}
//Data::Data(int m):month(m){day=1;year=2005;}
//Data::Data(){month=1;day=1;year=2005;}
void Data::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;}
int main()
{
Data d1(10,13,2005);
Data d2(12,30); //会出现调用不明确的现象
Data d3