gpt4 book ai didi

c++ - 将创建多少个 VTable?

转载 作者:行者123 更新时间:2023-11-28 06:35:50 26 4
gpt4 key购买 nike

class Base
{
public:
virtual void function1() {};
virtual void function2() {};
};

class D1: public Base
{
public:
virtual void function1() {};
};

class D2: public Base
{
public:
virtual void function2() {};
};

对于上面的例子,将创建 3 个 V.tables ( source )。

如果我为 D1 中的函数删除 virtual 关键字,D2 这段代码是否仍会创建 3 个 v.tables?

最佳答案

首先,如果一个成员函数在基类中声明为虚函数,那么无论您是否明确声明,它在所有派生类中都是虚函数。(尽管它依赖于实现)

其次,每个至少有一个函数的类都有一个且只有一个虚表。因此,对于您的问题,即使您从派生类函数中删除虚拟,它们仍将保持虚拟,并且每个类将有三个 vtable(在大多数实现中)。

关于c++ - 将创建多少个 VTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799138/

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