**题目四:**类型可变的类
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.
题目给定main函数:
int main()
{
Data d1;
int i;
cin>>i;
Data d2(i);
double d;
cin>>d;
Data d3(d);
return 0;
}
code:
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
class Data{
int Int;
double Dou;
string type;
public:
Data(){
Int=0;
Dou=0.0;
type="default";
cout<<"A default object is created."<<endl;
}
Data(int i){
Int=i;
Dou=0;
type="integer";
cout<<"An integer object "<<Int<<" is created."<<endl;
}
Data(double d){
Dou=d;
Int=0;
type="double";
cout<<"A double object "<<Dou<<" is created."<<endl;
}
~Data(){
if(strcmp(type.c_str(),"default")==0){
cout<<"The default object is erased."<<endl;
}else if(strcmp(type.c_str(),"integer")==0){
cout<<"The integer object "<<Int<<" is erased."<<endl;
}else{
cout<<"The double object "<<Dou<<" is erased."<<endl;
}
}//此处使用c_str()和data()都是可以的!
};
int main()
{
Data d1;
int i;
cin>>i;
Data d2(i);
double d;
cin>>d;
Data d3(d);
return 0;
}
string的函数:
1).data():返回字符串但不以’\0’结尾;
2).c_str():返回字符串且以’\0’结尾;