C++实验---类型可变的类

**题目四:**类型可变的类

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’结尾;

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115034153