【发布时间】:2013-11-03 22:58:46
【问题描述】:
我正在尝试理解虚拟析构函数。以下是本页复制粘贴When to use virtual destructors?
在这里,你会注意到我没有声明 Base 的析构函数是 虚拟的。现在,我们来看看下面的sn-p:
Base *b = new Derived(); // use b delete b; // Here's the problem![...] 如果要防止通过基类指针删除实例,可以使基类析构函数受保护且非虚;这样做,编译器不会让你在基类指针上调用 delete。
我不明白为什么使用受保护的非虚拟基类析构函数来防止删除。编译器不认为我们正在尝试从基类对象调用delete 吗? protected 和这有什么关系?
【问题讨论】:
标签: c++ protected virtual-destructor