相关疑难解决方法(0)

GCC 3.x和4.x中的C++对象中的VTable布局和VTable指针位置是什么?

我正在寻找VTable结构,顺序和内容的细节,以及对象内vtable指针的位置.

理想情况下,这将涵盖单继承,多继承和虚继承.

还将赞赏对外部文件的参考

GCC 4.0x类布局的文档在这里和Itanium,更广泛的GNU,ABI布局文档在这里.

c++ g++

16
推荐指数
2
解决办法
1万
查看次数

使用虚函数进行类型转换

在下面的代码中,pC == pA:

class A
{
};

class B : public A
{
public:
    int i;
};

class C : public B
{
public:
    char c;
};

int main()
{
    C* pC = new C;
    A* pA = (A*)pC;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我向B添加一个纯虚函数并在C中实现它时,pA!= pC:

class A
{
};

class B : public A
{
public:
    int i;
    virtual void Func() = 0;
};

class C : public B
{
public:
    char c;
    void Func() {}
};

int main()
{
    C* …
Run Code Online (Sandbox Code Playgroud)

c++ virtual casting

7
推荐指数
1
解决办法
805
查看次数

标签 统计

c++ ×2

casting ×1

g++ ×1

virtual ×1