c++虚函数底层逻辑
时间: 2023-12-22 13:27:53 浏览: 97
C++ 虚函数
C++中的虚函数是通过虚函数表来实现的。每个包含虚函数的类都有一个虚函数表,其中存储了该类的虚函数地址。当一个对象被创建时,它会被赋予一个指向该类虚函数表的指针,这个指针被称为虚函数指针。当调用虚函数时,实际上是通过虚函数指针找到该类的虚函数表,再根据函数在虚函数表中的位置调用相应的虚函数。
下面是一个简单的示例代码,演示了虚函数表的实现原理:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() {
cout << "Animal speaks!" << endl;
}
};
class Cat : public Animal {
public:
virtual void speak() {
cout << "Cat meows!" << endl;
}
};
int main() {
Animal* animal = new Cat();
animal->speak(); // 输出:Cat meows!
return 0;
}
```
在这个示例中,Animal类和Cat类都包含了虚函数speak()。当创建一个Cat对象并将其赋值给一个Animal指针时,该指针会指向Cat对象的虚函数表。当调用animal->speak()时,实际上是通过该指针找到Cat类的虚函数表,并调用其中的speak()函数。
阅读全文