#include<iostream> using namespace std; class Pig { public: Pig(){ cout<<"Pig 申请了空间..."<<endl; } virtual void climb(){ cout<<"我只是个平凡的猪猪。"<<endl; } virtual ~Pig(){ cout<<"Pig 释放了空间..."<<endl; } }; class MagicPig:public Pig { public: MagicPig(){ cout<<"MagicPig 申请了空间..."<<endl; } virtual void climb(){ cout<<"我能上树了耶!"<<endl; } ~MagicPig(){ cout<<"MagicPig 释放了空间..."<<endl; } }; int main() { Pig *p1 = new Pig; Pig *p2 = new MagicPig; cout << endl; p1->climb(); p2->climb(); cout << endl; delete p1; delete p2; return 0; } 为什么会显示编译错误
时间: 2024-03-22 16:41:14 浏览: 58
这段代码中有一些语法错误:
1. 头文件 `#include<iostream>` 应该加上 `<>`。
2. `using namespace std` 语句应该放在头文件后面。
3. 类的定义后面应该有一个分号。
4. `MagicPig` 类的构造函数应该使用 `:` 而非 `{}`。
5. `MagicPig` 类的析构函数后面应该有一个分号。
6. `Pig` 类的析构函数应该使用 `virtual` 关键字。
这些错误都应该被修复才能成功编译。正确的代码应该是这样的:
```c++
#include <iostream>
using namespace std;
class Pig {
public:
Pig() {
cout << "Pig 申请了空间..." << endl;
}
virtual void climb() {
cout << "我只是个平凡的猪猪。" << endl;
}
virtual ~Pig() {
cout << "Pig 释放了空间..." << endl;
}
};
class MagicPig : public Pig {
public:
MagicPig() : Pig() {
cout << "MagicPig 申请了空间..." << endl;
}
virtual void climb() {
cout << "我能上树了耶!" << endl;
}
virtual ~MagicPig() {
cout << "MagicPig 释放了空间..." << endl;
}
};
int main() {
Pig *p1 = new Pig;
Pig *p2 = new MagicPig;
cout << endl;
p1->climb();
p2->climb();
cout << endl;
delete p1;
delete p2;
return 0;
}
```
阅读全文