1. 程式人生 > >讀書筆記《Effective c++》 條款07 為多型基類宣告virtual解構函式

讀書筆記《Effective c++》 條款07 為多型基類宣告virtual解構函式

這個其實不用多說,用過OO類的語言應該都要這樣。

這麼看來簡單的物件和delphi的物件結構差不多。

書中說c++不支援final,在c++11中已經支援了,所以如果不希望類被繼承,可以加上final

c++的final有兩個用途:

1.阻止類被繼承

2.組織虛擬函式被override

stl中的容器類之類的按說應該都是final的,他們沒有虛解構函式,所以不應該繼承他們

總結:

a.帶多型性質的base class應該申明一個virtual解構函式。如果class帶有任何virtual,他就應該擁有一個virtual解構函式。

b.class的設計目的如果不是作為base class使用,或不是為了具備多型性,就不應該宣告virtual解構函式