XX软件公司的笔试题:
C++标准中,虚表指针在类的内存结构位置没有规定,不同编译器的实现可能是不一样的。请实现一段代码,判断当前编译器把虚表指针放在类的内存结构的最前面还是最后面。
当时的解答是:
#include <iostream>
using namespace std;
typedef unsigned (*Fun)(void);
class Base
{
public:
Base(void){}
virtual unsigned foo(void)
{
cout<<"Construct Base"<<endl;
return 1;
}
public:
virtual ~Base(){}
};
class Derive : public Base
{
public:
Derive(void){}
virtual unsigned foo(void)
{
cout<<"Construct Derive"<<endl;
ret

这篇博客探讨了如何确定C++编译器在内存中放置虚表指针的位置,通过实例展示了不同方法的正确性和局限性,指出可以通过比较类实例首地址和第一个成员变量地址来判断虚表指针的位置。
最低0.47元/天 解锁文章
1026

被折叠的 条评论
为什么被折叠?



