This question already has answers here:
clang: no out-of-line virtual method definitions (pure abstract C++ class)
(4个答案)
1年前关闭。
根据this的回答,在C++中声明类的方法在概念上类似于接口(interface):
但是,当我这样做时,我得到警告:
(4个答案)
1年前关闭。
根据this的回答,在C++中声明类的方法在概念上类似于接口(interface):
class IDemo
{
public:
virtual ~IDemo() {}
virtual void OverrideMe() = 0;
};
但是,当我这样做时,我得到警告:
'IDemo' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit
。是否有适当的方法在项目中使用此类接口(interface)而又不会用这些vtable污染每个翻译单元? 最佳答案
您已经具有一个非纯虚函数:析构函数!只需在其自己的翻译单元中进行定义即可。
// IDemo.h
class IDemo
{
public:
virtual ~IDemo();
virtual void OverrideMe() = 0;
};
// IDemo.cpp
IDemo::~IDemo() = default;
关于c++ - 在C++中声明 “interface”,并且不将其vtable分配给每个翻译单元,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57687497/
10-10 11:20