腾讯笔试题

来源:互联网 发布:listview的优化方案 编辑:程序博客网 时间:2024/05/14 13:28
#include <iostream>using namespace std;class ClassA{public:virtual ~ ClassA(){};virtual void FunctionA(){};};class ClassB{public:virtual void FunctionB(){};};class ClassC: public ClassA, public ClassB{public:};int main(){ClassC aObject;ClassA* pA = &aObject;ClassB* pB = &aObject;ClassC* pC = &aObject;cout << (int)pA <<endl;cout << (int)pB <<endl;cout << (int)pC <<endl;return 0;}

判断三个输出之间的关系:

由于有虚函数的存在,导致C++在默认情况下会有虚指针的存在,所以在aObject中,地址最开始处应该是一个虚指针,如果将aObject赋值给pB,由于ClassB不存在虚函数,所以要跳过虚指针,所以他们的关系是:

pA == pC

pB == pC + 4     //虚指针的大小


原创粉丝点击