資料結構第12課 頂層父類的建立

2021-09-28 20:45:29 字數 1628 閱讀 7665

本文學習自 狄泰軟體學院 唐佐林老師的 資料結構課程

問題:我們建立資料結構為啥要建立乙個頂層父類呢?意義和價值是什麼?

建立可復用的資料結構庫注意:

當代軟體架構實踐中的經驗

new操作如果失敗會發生什麼?

new成功的時候 各個編譯器之間沒有什麼差異,但是new失敗的情況,編譯器之間就會產生不同的結果,比如早期的c++編譯器在new失敗的時候會返回乙個空指標,但是很多現c++編譯器在new失敗的時候會丟擲乙個標準庫裡面的異常,這就給我們建立乙個可復用的**庫帶來了一定的困難。因為如果說new失敗了,我們這個庫裡面的**如何處理才能相容絕大多數編譯器。

頂層父類介面定義

class object

;

實驗1

object.h

#ifndef object_h

#define object_h

//放入我們自己的命名空間中

namespace dtlib;

}#endif

object.cpp

#include "object.h"

#inlcude //malloc

#include //log

using namespace std;

namespace dtlib

;class child : public test

;int main()

執行結果:

object::operator new: 12

object::operator new: 16

obj1 = 0x5719c8

obj2 = 0x5719c0

object::operator delete: 0x5719c8

object::operator delete: 0x5719c0

說明:列印 「object::operator new」" 說明沒有呼叫系統的new,而是呼叫了頂層父類的new,

列印 「object::operator new: 12」 說明 test物件需要12個位元組 12 = i(4)+j(4)+p(4:隱藏著的指向虛函式表的指標)

列印 「object::operator new: 16」 說明 child物件需要16個位元組 16 = i(4)+j(4)+k(4)+p(4:隱藏著的指向虛函式表的指標)

列印 「object::operator delete:」 說明刪除時使用的不是系統delete 而是呼叫了頂層父類的delete

C 資料結構第12課 頂層父類的建立

小結 注 如果析構函式被定義為純虛函式,那麼必須提供純虛析構函式的定義 object 純虛析構函式的定義 這個定義是必需的,因為虛析構函式工作的方式是 最底層的派生類的析構函式最先被呼叫,然後各個基類的析構函式被呼叫。這就是說,即使是抽象類,編譯器也要產生對 object的呼叫,所以要保證為它提供函...

12 頂層父類的建立

目錄 頂層父類的介面定義 程式設計實驗 頂層父類的建立 小結 當代軟體結構實踐中的經驗 不幸的事實 new操作如果失敗會發生什麼?建立jqlib object類的意義 object obj1 new test size 12 8 虛函式指標 12 object obj2 new child size...

資料結構(七)之陣列類的建立

1.1 完成 array 類的具體實現 1.1.2 需求分析 1.1.3 array 設計要點 1.1.4 array 類的宣告 template typename t class array public object 1.2 完成 staticarray 類的具體實現 1.2.1 statica...