Jul*_*n-L 5 c++ abstract-class destructor compiler-generated
class Base
{
virtual void foo() = 0;
//~Base(); <-- No destructor!
};
Run Code Online (Sandbox Code Playgroud)
显然,Base将得出.那么,C++是否说编译器生成的析构函数Base必须是虚拟的?
谢谢!
不,析构函数不会被virtual删除,除非你标记它.原因很简单 - 几乎可以通过指针和引用来调用,以及如何以及是否进行虚拟调用与是否使用创建对象无关new.如果您不创建对象,new则不需要delete它们,因此您不需要虚拟析构函数.
| 归档时间: |
|
| 查看次数: |
1042 次 |
| 最近记录: |