虚函数是C++实现多态的关键,没有虚函数,C++只能是OB,不能完成OO。对于VC++中虚函数的实现机制,有很多文章,我看过的是陈浩写的,链接如下:
http://blog.csdn.net/haoel/article/details/1948051。总觉得还是有些不太清楚的,所以自己做了进一步的实验,记录下来以供参考。
本文介绍的是没有继承情况下,带有虚函数的类在内存中布局,以及其实例(对象)内存布局。
1.源码
#include <iostream>
#include <stdio.h>
using namespace std;
class CVirtual
{
public:
int x;
public:
virtual void VF()
{
cout<<this->x<<endl;
cout<<"hello"<<endl;
}
public:
CVirtual(int x)
{
this->x = x;
}
};
typedef void (CVirtual::*Fun)();
union
{
Fun f;
unsigned int addr;
}ut;
int main(int argc, char** argv)
{
//打印出类实例的大小
cout<<"对象大小为 :"<<