Problem D: 类型可变的类
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 4561 Solved: 2371
[Submit][Status]
Description
定义一个Data类,至少包含1个int类型的数据成员、1个double类型的数据成员,定义其构造函数和析构函数,使得程序执行时,能产生样例所示的结果。
Input
输入2行,第1行是1个int类型的数据,第2行是1个double类型的数据。
Output
见样例。
Sample Input
120 3.14
Sample Output
A default object is created. An integer object 120 is created. A double object 3.14 is created. The double object 3.14 is erased. The integer object 120 is erased. The default object is erased.
HINT
Append Code
int main()
{
Data d1;
int i;
cin>>i;
Data d2(i);
double d;
cin>>d;
Data d3(d);
return 0;
}
答案:
#include <iostream>
using namespace std;
class Data
{
private:
int i,n;
double d;
public:
Data()
{
n=1;
cout<<"A default object is created."<<endl;
}
Data(int a)
{
n=2;
i=a;
cout<<"An integer object "<<i<<" is created."<<endl;
}
Data(double b)
{
n=3;
d=b;
cout<<"A double object "<<d<<" is created."<<endl;
}
~Data()
{
if(n==1)
cout<<"The default object is erased."<<endl;
else if(n==2)
cout<<"The integer object "<<i<<" is erased."<<endl;
else
cout<<"The double object "<<d<<" is erased."<<endl;
}
};
int main()
{
Data d1;
int i;
cin>>i;
Data d2(i);
double d;
cin>>d;
Data d3(d);
return 0;
}
分析:
当无法直接通过变量类型来实现判断语句时,考虑另设一个变量n,在不同函数中赋不同值,再通过判断变量n的值来实现判断语句输出不同结果