gpt4 book ai didi

c++ - type_info 对象存储在哪里?

转载 作者:太空狗 更新时间:2023-10-29 20:46:47 30 4
gpt4 key购买 nike

我从“Inside The C++ Object Model”中读到,type_info 对象通常存储在虚拟表的第一个槽中。但是,我迭代了虚拟表中的成员:

class Base {
public:
virtual void f() { cout << "Base::f" << endl; }
virtual void g() { cout << "Base::g" << endl; }
virtual void h() { cout << "Base::h" << endl; }
};

typedef void(*Fun)(void);

Base b;

(Fun)*((int*)*(int*)(&b)+0); // Base::f()
(Fun)*((int*)*(int*)(&b)+1); // Base::g()
(Fun)*((int*)*(int*)(&b)+2); // Base::h()

正如您从最后三行中看到的,我根本找不到 type_info。

最佳答案

没有交叉编译器方法可以从对象的地址获取 type_info。你也不希望有;获取 type_info 的方法是使用特定的 C++ 关键字:typeid

关于c++ - type_info 对象存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155652/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com