gpt4 book ai didi

c++ - 下面的代码会创建多少个V表?

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:13 25 4
gpt4 key购买 nike

class base{
public:
virtual void fn() {

}
};

class der1 : public base {
void fn() {

}
};

class der2 : public der1 {
virtual void fn() {

}
};

我还有一个问题,在类der1的定义中,我在重新定义函数fn时没有提到“虚拟”。对创建V表有影响

最佳答案

如前所述,vtable 是编译器/平台特定的实现细节,因此没有通用的答案。

I have another question.In definition of class der1, I have not mention "virtual" while redefining function fn. Has it any effect while creating V table

由于函数 fn() 已经在基类中被定义为 virtual ,所有子类的实现在定义上也是虚拟的(因此覆盖了基类的实现),不管它们是否被明确声明如此。所以 vtable 将包含它们(如果特定的编译器生成一个)。

您可以通过将 base::fn() 设为纯虚拟来轻松测试它。如果声明 der1::fn() virtual 有所不同,则没有它就无法实例化 der1

关于c++ - 下面的代码会创建多少个V表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173742/

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