问答题

请使用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......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题