请用c++写一段用到虚表和虚指针的程序
时间: 2024-02-03 16:12:15 浏览: 21
以下是一个简单的例子,演示了如何使用虚表和虚指针实现多态性:
```
#include <iostream>
class Shape {
public:
virtual void draw() {
std::cout << "Drawing a generic shape." << std::endl;
}
};
class Circle : public Shape {
public:
void draw() {
std::cout << "Drawing a circle." << std::endl;
}
};
class Rectangle : public Shape {
public:
void draw() {
std::cout << "Drawing a rectangle." << std::endl;
}
};
int main() {
Shape* s1 = new Circle();
Shape* s2 = new Rectangle();
s1->draw();
s2->draw();
delete s1;
delete s2;
return 0;
}
```
在这个程序中,我们定义了一个Shape类,它有一个虚函数draw()。然后我们派生了一个Circle类和一个Rectangle类,它们都重写了draw()函数。
在main()函数中,我们创建了两个Shape指针s1和s2,并分别让它们指向Circle和Rectangle对象。由于draw()函数是虚函数,因此它们将根据它们所指向的实际对象类型来调用正确的draw()函数。
最后,我们释放所有对象的内存,以避免内存泄漏。