问答题
请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1,此工程中包含了类Pets(“宠物”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Name: sonny Type: dog
Name: John Type: dog
Name: Danny Type: eat
Name: John Type: dog
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include<iostream>
using namespace std;
enum Pets_type{dog, cat, bird, fish};
class Pets{
private:
char*name;
Pets_type type;
public:
Pets(const char*name="sonny", Pets type type=dog);
Pets& operator=(const Pets &s);
~Pets();
void show()const;
};
Pets::Pets(const char*name, Pets_type type)
//构造函数
{
this->name=new char[strlen (name)+1];
strcpy(this->name, name);
//ERROR********found********
type=type;
}
Pets::~Pets()//析构函数,释放name所指向的字符串
{
//ERROR*********found*********
name=’/0’;
}
Pets& Pets::operator=(const Pets &s)
{
if(&s==this)//确保不要向自身赋值
return*this;
delete[]name;
name=new char[strlen(s.name)+1];
//ERROR********found********
strcpy(this->name, name);
type=s.type;
return*this;
}
void Pets::show()const
{
cout<<"Name:"<<name<<"Type:";
switch(type)
{
case dog: cout<<"dog"; break;
case cat: cout<<"cat"; break;
case bird: cout<<"bird"; break;
case fish: cout<<"fish"; break;
}
cout<<endl;
}
int main()
{
Pets mypet1, mypet2("John", dog);
Pets youpet("Danny", cat);
mypet1.show();
mypet2.show();
youpet.show();
youpet=mypet2;
youpet.show();
return 0;
}
【参考答案】
(1)this->type=type; (2)delete[]name; (3)strcpy(this->name, s......
(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)