【发布时间】:2014-03-21 04:14:12
【问题描述】:
我发现自己每次编写基本接口时都会做的一件事是声明和定义一个纯虚拟析构函数。为什么 C++11 不允许默认定义纯虚析构函数?
struct Ibase
{
virtual Ibase* basefun1() = 0;
virtual ~Ibase() = 0 = default;
};
【问题讨论】:
标签: c++11
我发现自己每次编写基本接口时都会做的一件事是声明和定义一个纯虚拟析构函数。为什么 C++11 不允许默认定义纯虚析构函数?
struct Ibase
{
virtual Ibase* basefun1() = 0;
virtual ~Ibase() = 0 = default;
};
【问题讨论】:
标签: c++11
基类的析构函数总是在派生类的对象被销毁时显式调用。
所以如果没有定义,就会出现链接错误。
【讨论】: