前言
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。
虚函数实际上是通过虚函数表vtable来实现的。vtable是一张地址表,有了这张表,就能够正确找到被覆盖的虚函数,进行跳转。在内存空间上看,这张表位于对象的最开始的位置。
1.单继承
未完待续!
2.多重继承
未完待续!
#include <iostream>
using namespace std;
class AA{
public:
AA(){
cout<<"AA"<<endl;
}
};
class A:AA{
public:
A(){
cout<<"A"<<endl;
}
virtual ~A(){
cout<<"~A"<<endl;
}
};
class _A:public A{
public:
_A(){
cout<<"_A"<<endl;
}
virtual ~_A(){
cout<<"~_A"<<endl;
}
};
int main()
{
{
_A _a;
A* a = &_a;
cout<<"destroy start"<<endl;
a->~A();
cout<<"destroy end"<<endl;
}
}