[英]C++ Should an abstract class provide implementation for a (virtual) destructor?
我有一個抽象的類,它定義了具體類的常見行為。 因此,沒有內存可以清理,因為類無法實例化。 但是,我知道你需要一個虛擬析構函數,以便在它們的靜態類型是Base類時調用派生的析構函數。
這是否意味着我應該總是為抽象類聲明一個虛擬析構函數,但只是將實現留空?
您必須在類層次結構中提供每個析構函數的定義,因為在派生類被銷毀時,所有析構函數都會被調用,即使某些析構函數是微不足道的。
通常,您可以通過在基類中放置virtual ~Base() { }
(或其中一些異常指定的變體)來實現此目的。 但是,如果析構函數是唯一的虛擬成員函數,並且您想要使基本抽象,則可以使析構函數為純虛擬,但您仍需要定義它:
struct Base
{
virtual ~Base() = 0;
};
Base::~Base() { }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.