C++11 中默认纯虚拟析构函数的正确放置
Proper placement for the default pure virtual destructor in C++11
我有一个接口 class 但我希望所有派生的 class 都实现虚拟析构函数:
// Interface.h
class Interface {
virtual ~Interface() = 0;
};
Interface::~Interface() = default;
问题是,在这种情况下,由于重复的符号,我遇到了链接器错误。
我可以将定义放在.cpp
文件中,但我想知道是否有更优雅的解决方案?
您可以在之前添加内联。根据 http://en.cppreference.com/w/cpp/language/destructor 这种语法是可以的:
decl-specifier-seq(optional) ~ class_name () = default;
decl-specifier-seq - friend, inline, virtual, or nothing (no return type)
我有一个接口 class 但我希望所有派生的 class 都实现虚拟析构函数:
// Interface.h
class Interface {
virtual ~Interface() = 0;
};
Interface::~Interface() = default;
问题是,在这种情况下,由于重复的符号,我遇到了链接器错误。
我可以将定义放在.cpp
文件中,但我想知道是否有更优雅的解决方案?
您可以在之前添加内联。根据 http://en.cppreference.com/w/cpp/language/destructor 这种语法是可以的:
decl-specifier-seq(optional) ~ class_name () = default;
decl-specifier-seq - friend, inline, virtual, or nothing (no return type)