实例;
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
class base1{
public:
base1()
{
print();
}
virtual ~base1()
{
cout << "父类1析构" << endl;
}
public:
virtual void print()
{
cout << "print1" << endl;
}
};
class base2 :public base1
{
public:
base2()
{
print();
}
virtual ~base2()
{
cout << "父类1析构" << endl;
}
public:
virtual void print()
{
cout << "print2" << endl;
}
};
int main()
{
base2 oop;
system("pause");
return 0;
}
这个案例打印出print1,print2,这里的结论为:
在生成对象是Vptr指针是分布初始化的,在执行父类构造函数中的print时,vptr指针指向父类中的虚函数表,在执行子类的构造函数中的print时vptr指针指向子类的虚函数表