【发布时间】:2011-03-31 00:07:55
【问题描述】:
我认为通常单独使用虚拟就足够了。
除了强制派生类实现自己的析构函数之外,还有其他理由让它成为纯虚拟吗?我的意思是,如果你在类的构造函数中分配了一些东西,你应该实现你自己的析构函数 -类是否派生。
据我所知,这不算作答案:如果你想要你的类抽象并且它没有纯虚函数 - 把它留给析构函数。
还有什么用途?
【问题讨论】:
-
请注意,如果没有明确提供,编译器会自动在派生类中生成析构函数。这个自动生成的析构函数就够了,不用你自己写析构函数,即使基类里的那个是纯的。
-
所以即使是第一个原因实际上也没有。很棒的评论!
-
附注:另一个必须是虚拟的函数是(如果存在)operator=。与 dtor 的原因相同。
-
@rursw1:
operator=()对具有值语义的类很有用,但对多态类没有用。
标签: c++ abstract-class destructor pure-virtual