对vtable的未定义引用;虚拟功能问题
undefined reference to vtable; virtual function issue
假设我用声明覆盖子类中的虚拟函数,并且不给出该方法的定义。例如:
class Base
{
virtual void f() = 0;
}
class Derived : public Base
{
void f();
}
(这里我还没有给出f
的定义)。如果我现在使用类Derived
,是否可能会出现编译器错误,如"对vtable的未定义引用…"?
不适用于f
。您已经明确表示函数将没有实现,这意味着派生类必须实现它
但是,如果您声明一个纯虚拟析构函数(例如virtual ~Base()= 0
),则必须在某个地方提供一个定义。在这种情况下,如果不这样做,您将得到一个"未定义的vtable引用…"错误。
相关文章:
- 如何在C++中获得"静态纯虚拟"功能?
- std::is_trivially_copyable_v 关于虚拟功能
- 隐藏重载虚拟功能的模板化访客:SFINAE 在使用?
- 为什么我无法覆盖虚拟功能?
- 虚拟功能不起作用
- 如果在创建对象时创建了 VPTR,那么为什么具有虚拟功能的类的大小在 32 位系统上为 4,在 64 位机器上为 8
- 虚拟功能如何影响static_cast?
- __declspec(属性)和虚拟功能
- 实现来自第三方类的虚拟功能
- 消除未使用的虚拟功能
- 为什么虚拟继承即使不涉及虚拟功能也需要 vtable?
- C 虚拟功能的输出
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 虚拟功能是否不太可能导致堆栈溢出
- 使用继承和虚拟功能应用五个规则
- 两个派生类(十六进制 二进制)的虚拟功能
- 虚拟功能编译器优化C
- 虚拟功能指针指向派生类中的函数
- 隐藏的过载虚拟功能OSX QT4
- 使用虚拟功能在C 中进行猜测