c++虚函数指针调用过程
时间: 2023-07-28 16:09:59 浏览: 134
在C++中,虚函数是通过虚函数表来实现的。每个拥有虚函数的类都有一个虚函数表,其中存储了该类的虚函数地址。当一个对象被创建时,它会被赋予一个指向该类虚函数表的指针——这就是所谓的虚指针。
当调用一个虚函数时,会首先使用对象的虚指针找到该对象所属类的虚函数表,然后在虚函数表中根据函数的索引找到对应的函数地址,并调用该函数。
以下是一个简单的示例:
```c++
class A {
public:
virtual void func() { cout << "A::func()" << endl; }
};
class B : public A {
public:
void func() { cout << "B::func()" << endl; }
};
int main() {
A *a = new B();
a->func(); // 输出 B::func()
return 0;
}
```
在这个示例中,我们创建了一个指向B类对象的A指针,然后调用了虚函数func()。由于虚函数在B类中被重写,因此输出的结果是“B::func()”。
总之,虚函数的调用过程涉及到虚指针和虚函数表的使用,通过这种方式实现了多态性。
阅读全文