在 C++ 中,如果設計者沒有發生失誤的話,通常可以由 destructor 的宣告來判斷該 class 對繼承的態度:
public and non-virtual
此類 class 不打算讓任何 class 繼承它,繼承可能會導致錯誤行為。public and virtual
此類 class 提供了多型的特性,並且預期到會有 subclasses 的使用;使用指標刪除物件是安全的。protected and non-virtual
較為少見,此類 class 提供了介面給 subclasses ,但是卻不希望客戶使用 super class 的指標進行刪除,也不希望客戶具現化出 super class 的實體。private
這個 class 完全是為了戰術應用而生的,如 Singleton 等;它應該要自己解決生命週期的問題。
說是這麼說啦,不過現在我看過的 code 都是用 public ,只有 virtual or non-virtual 的差別而己。
像是 policy classes 的 destructor 就用途來說似乎都該是 protected and non-virtual ,因為沒人會用 pointer of super class 去刪除它們,也不太可能被實體化。
雖然說語法也只是買保險,真正想亂搞的話誰都擋不住。
像是 policy classes 的 destructor 就用途來說似乎都該是 protected and non-virtual ,因為沒人會用 pointer of super class 去刪除它們,也不太可能被實體化。
雖然說語法也只是買保險,真正想亂搞的話誰都擋不住。
沒有留言:
張貼留言