vtable

    0热度

    1回答

    我试图将C++代码编译为托管dll。我可以用这个编译器和连接选项编译: 编译: /TP /analyze- /W3 /Zc:wchar_t /Zi /Od /sdl- /Fd"Debug\vc140.pdb" /Zc:inline /fp:precise /D "_SCL_SECURE_NO_WARNINGS" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_W

    5热度

    5回答

    有人可以解释这个不同类的虚拟表是如何存储在内存中的?当我们使用指针调用函数时,他们如何使用地址位置调用函数?我们可以使用类指针获取这些虚拟表内存分配大小吗?我想查看一个虚拟表为一个类使用多少内存块。我怎么能看到它? class Base { public: FunctionPointer *__vptr; virtual void function1() {};

    0热度

    2回答

    在下面的这个例子中,Type有一个虚拟方法,所以它有一个vtable。但是,Type :: Bar()不是虚拟的。当调用Bar()时,调用是否也通过vtable机制,还是仅适用于Foo()? struct Base { virtual void Foo() {} } struct Type : Base { void Foo() override {} void

    0热度

    1回答

    我正在通过C++学习COM编程。据我了解,在双接口的客户端,你有两个选择: 获取IDispatch接口,查询的DISPID用的GetIDsOfNames,并使用调用访问方法和属性。 在您的项目中包含带有接口定义的.h头文件和带MIDL创建的GUID的.c源文件,并直接通过vtable调用这些函数,vtable是编译器从.h文件中已知的。 我想从C++程序创建一个相当复杂的Excel工作簿(我坚持使

    2热度

    4回答

    在下面的代码段给我错误 未定义参考`虚表为衍生” 代码: #include <iostream> class base{ public: base(){} virtual ~base(){} virtual void test() { } }; class Derived:public base{ public:

    9热度

    4回答

    据我所知制作sealed去掉在VTable中查找还是我错?如果我创建了一个类sealed,这是否意味着类层次结构中的所有虚拟方法也都被标记为sealed? 例如: public class A { protected virtual void M() { ........ } protected virtual void O() { ........ } } public

    2热度

    2回答

    假设我有一个名为libplugin的共享库。在此共享库中,有一类: class Plugin { public: virtual void doStuff(); }; 让我们也假设有一个名为libspecialplugin另一个共享库。它包含以下类和函数: class SpecialPlugin : public Plugin { public:

    11热度

    1回答

    我想象这是特定于实现的,但对ARMv7,arm64,和x86_64构建使用的libstdC++和的libC++(GCC或铛),似乎的vtables总是有填充的8个字节(16在64位)开头,并取出一个虚函数表通常看起来是这样的: ldr.w r0, <address of vtable> adds r0, 0x8 str r0, [r1] ; where r1 is the instance

    1热度

    1回答

    我正在C++中实现Visitor类,它为分析树生成XML输出。 当我在Windows上使用Clion进行编译时,代码会编译,但是当它运行后,它会输出预期会崩溃的代码。错误代码是这个 进程退出代码为-1073741819(0000005) 完成当我尝试用gcc(不克利翁)编译我得到错误信息 未定义参考'PrintXMLVisitor的vtable'。 我的代码如下。我已蒸馏下来到最少的产生错误 AS

    -2热度

    2回答

    让我们一个C++例如: class A { public: A() { cout << "hey" << endl; } ~A() { cout << "by" << endl; } }; class B : public A { public: B() {} virtual ~B() { cout << "from b" << endl