每个包含了虚函数的class会包含一个虚函数表,对于C1和C2的虚函数表的结构如下:
- 非虚函数不会加入到虚函数表中
- 子类中如果对虚函数重写,虚函数表中会覆盖父类的虚函数
C1::~C1() |
C1::~f1() |
C1::~f2() |
C1::~f3() |
C2::~C2() |
C2::~f1() |
C1::~f2() |
C1::~f3() |
C2::~f5() |
class C1 {
public:C1();virtual ~C1();virtual void f1();virtual int f2(char c) const;virtual void f3(const string& s);void f4() const;
};class C2 : public C1 {
public:c2();virtual ~C2();virtual void f1();virtual void f5(char *str);
};