问答题
请使用VC6或使用【答题】菜单打开
proj1下的工程proj1,此工程中包含了类Pets(“宠物”)和主函数main的定义。程序中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Name:sonny Tvpe:dog
Name:John Type:dog
Name:Danny Type:cat
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;
}