[英]Can I define a constructor in an abstract base class?
我想在C ++中編寫一個“接口”類,它是一個純粹的虛擬抽象基類。
我可以在這個接口類中定義構造函數嗎? 構造函數不能是純虛函數,但是如何為接口類定義構造函數呢?
編輯:我是否需要在這樣的接口類中使用虛擬析構函數?
實際上有兩個問題在一個:
構造函數不能是純虛函數
TL / DR:如果你試圖在你的界面上添加一個構造函數,那么它不再是一個接口,而是一個簡單的抽象基類,完全允許它有一個。
C ++沒有接口的概念。 有具體的類和抽象類,僅此而已。 允許抽象類具有構造函數,數據成員和其他所有內容。 標記類抽象所需的唯一內容是單個純虛擬成員函數。
有些人使用“interface”一詞來表示沒有任何數據成員或非純虛成員函數的抽象類。 其他人使用略有不同的定義。 就語言而言,確切的定義沒有任何意義。 您可以擁有數據成員並定義構造函數,並仍然將您的類稱為接口,沒有人會向您發出引用。 或者你可以完全避開這個詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.