如果已經提問此問題,我表示抱歉。我正在寫一個將與python接口的C++類。到目前爲止的類實現是:非多態和非抽象基類中的虛析構函數
struct body_data
{
map <int, atom*> atoms;
map <int, bond*> bonds;
map <int, dihedral*> dihedrals;
};
該類是另一個類的基類。我沒有添加這個類的析構函數,因爲我很困惑。在所有我已經讀過關於基類的析構函數的文章中,他們建議析構函數應該是公共虛擬的或者是保護的。由於我不打算在C++代碼或python接口中多態地使用上述類,我是否真的需要使析構函數爲public virtual或protected?我正在考慮讓這個類公開,這樣程序員就會知道永遠不會多態地使用這個類。我的想法是否正確?
創建3個課程。上面有一個受保護的析構函數,一個從上面繼承而來的類,沒有其他變化(但沒有繼承),還有第三個類繼承了上面的類,並做了其他的工作。這意味着如果有人刪除了一個指向base的指針,他們將得到一個錯誤:這是好的,因爲有兩個不同的類是有效的基指針,並且將它們刪除錯誤是未定義的行爲。 – Yakk