關於基類的析構函式應不應該為virtual

2021-06-08 21:44:53 字數 724 閱讀 9692

如果該基類要派生其它類,則一定要 virtual

基類 coperation 的析構函式沒加

virtual 時程式執行結果

可以看到加運算類沒有被析構。為什麼因為工廠類的成員型別為基類指標,它只析構了基類。

基類 coperation 的析構函式加

virtual 時程式執行結果

可以看到所有構造的類都被析構了

程式源**如下 (為了驗證設計模式理念的第乙個程式):

#include using namespace std;

//運算類

class coperation{

public:

coperation()

{ cout<

op_factory.get_piont_oper()->set_numberb(2);

double add_result = op_factory.get_piont_oper()->get_result();

cout << op_factory.get_piont_oper()->get_numbera()<

多型基類的析構函式應該為虛函式

includeusing namespace std class cbird cbird virtual void fly class clark public cbird clark void fly int main cbird作為基類描述鳥類的一般行為和屬性,因為不同鳥類的飛行特點不同,所以基...

多型基類的析構函式應該為虛函式

includeusing namespace std class cbird cbird virtual void fly class clark public cbird clark void fly int main cbird作為基類描述鳥類的一般行為和屬性,因為不同鳥類的飛行特點不同,所以基...

為什麼在析構函式中不應該丟擲異常

1.丟擲異常 1.1 丟擲異常 也稱為拋棄異常 即檢測是否產生異常,在c 中,其採用throw語句來實現,如果檢測到產生異常,則丟擲異常。該語句的格式為 throw 表示式 如果在try語句塊的程式段中 包括在其中呼叫的函式 發現了異常,且拋棄了該異常,則這個異常就可以被try語句塊後的某個catc...