c++ virtual
时间: 2023-10-18 12:22:07 浏览: 88
在C++中,virtual关键字用于声明虚函数,即可以被子类重写的基类函数。当一个类定义了一个虚函数时,它会自动创建一个虚函数表,存储所有虚函数的地址。每个对象都有一个指向虚函数表的指针,当调用虚函数时,会根据对象指针找到对应的虚函数表,并调用正确的虚函数。
使用虚函数可以实现多态性,即不同的对象可以调用同一个虚函数,但可能会有不同的实现。这种特性可以在面向对象的程序设计中提高代码的可复用性和可扩展性。
下面是一个简单的例子:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual int getArea() {
cout << "Parent class area :" <<endl;
return 0;
}
};
class Rectangle: public Shape {
public:
int getArea () {
cout << "Rectangle class area :" <<endl;
return (width * height);
}
private:
int width;
int height;
};
int main() {
Shape *shape;
Rectangle rec;
shape = &rec;
shape->getArea();
return 0;
}
```
输出结果为:
```
Rectangle class area :
```
在这个例子中,我们定义了一个Shape类和一个Rectangle类,Rectangle类继承自Shape类。Shape类中定义了一个虚函数getArea(),Rectangle类重写了这个函数。在main函数中,我们创建了一个Shape指针指向一个Rectangle对象,并调用了getArea()函数。由于getArea()函数是虚函数,所以会根据对象指针找到对应的虚函数表,并调用Rectangle类中的getArea()函数。这个例子展示了虚函数的多态特性。
阅读全文