我需要設置一個類繼承結構,其中抽象基類只保存成員變量(但不包含成員方法)。成員方法將由派生類定義。因此,我需要的是這篇文章:Making a class abstract without any pure virtual methods受保護的構造函數與純虛析構函數
從頂部的2答案在那裏,我意識到有2種方式實現它:
- 讓析構函數純虛。
- 使構造函數受到保護。
我很想知道兩種方法之間的區別。是否有一種情況應該比另一種更優先(或者某些特殊情況下可以工作而不是另一種)?我想了想,想不到任何事情。
我在這裏搜索了一些帖子的答案(Is there a use for making a protected destructor virtual?,C++: Protected Class Constructor,Should an abstract class' destructor be pure virtual?),試圖把東西放在一起,但我無法得出結論。
這不*真的*回答OP的問題。一個非純粹的虛擬析構函數可以與受保護的構造函數一起使用,而您的示例代碼將顯示已定義的行爲。你在談論一個相關但正交的問題。 –