第五十五課 經典問題解析四

2022-06-04 23:15:12 字數 2917 閱讀 7802

1、new和malloc

(1)、new關鍵字是c++的一部分

malloc是c庫提供的函式

(2)、new是以具體型別為單位分配記憶體

malloc是以位元組為單位分配記憶體

(3)、new在申請記憶體空間時可進行初始化

malloc僅根據需要申請定量的記憶體空間

(4)、new在所有c++編譯器中都被支援

malloc在某些系統開發中是不能呼叫的

(5)、new能觸發建構函式的呼叫

malloc僅分配需要的記憶體空間

(6)、物件的建立只能用new

malloc不適合物件導向的開發

2、delete和free

(1)、delete在所有c++編譯器中都被支援

free在某些系統開發中是不能呼叫的

(2)、delete能觸發析構函式的呼叫

free僅歸還之前分配的記憶體空間

(3)、物件的銷毀只能用delete

free不適合物件導向的開發

#include#include

//說明malloc和free是函式

using

namespace

std;

class

test

~test()

};int

main()

1、建構函式不可以成為虛函式

(1)、在建構函式執行結束後,虛函式表指標才會被正確初始化

2、析構函式可以成為虛函式

(1)、建議在設計類時將析構函式宣告為虛函式

3、建構函式裡面不可能發生多型行為

(1)、建構函式執行時,虛函式表指標未被正確初始化

4、析構函式裡面不可能發生多型行為

(1)、在析構函式執行時,虛函式表指標已被銷毀

#includeusing

namespace

std;

class

base

virtual

void

func()

virtual ~base()//

can be declared virtual

};class derived : public

base

virtual

void

func()

virtual ~derived()

};int

main()

//列印結果

/*base()

base::func()

derived()

derived::func()

~derived()

derived::func()

~base()

base::func()

*/

1、dynamic_cast是與繼承相關的型別轉換關鍵字

2、dynamic_cast要求相關類中必須有虛函式

3、用於有直接或間接繼承關係的指標(引用)之間

(1)、指標

a、轉換成功:得到目標型別的指標

b、轉換失敗:得到乙個空指標

(2)、引用

a、轉換成功:得到目標型別的引用

b、轉換失敗:得到乙個異常操作資訊

#includeusing

namespace

std;

class

base

virtual ~base()//

使用dynamic_cast需要類中有虛函式,故這裡將析構函式宣告為虛函式

};class derived : public

base

;int

main()

else

cout

return0;

}

(1)、new/delete會觸發建構函式或者析構函式的呼叫

(2)、建構函式不能成為虛函式

(3)、析構函式可以成為虛函式

(4)、建構函式和析構函式裡面都不能產生多型的行為

(5)、dynamic_cast 關鍵字是與繼承相關

程式設計第五十五天

c algorithm標頭檔案中find演算法 include iostream include algorithm using namespace std void printelem int elem int main int i find ia,ia 7,9 在整個陣列中查詢元素 9 int ...

實習篇 第五十五天

今天和明天的任務就是完成介面文件的設計,也學是為我請假的原因,就把這個我認為不複雜的任務交給我做,但是我又錯了 好像我就沒有對過 寫介面文件真的是不容易,首先要把需求搞懂,然後把每個介面的需要傳入的引數和傳出的引數列出來,並且還要知道請求報文和響應報文!這一點我需要和對應的人協商欄位與報文,我光看其...

2018 06 30 第五十五天 oracle

一 分頁查詢 rowid 對應著資料庫中的一條記錄,是當一條記錄被寫入資料庫的時候,由資料庫管理系統生成。資料庫系統自己來維護。select from emp where rowid aaae51aaeaaaahlaaa rownum 被稱為偽列。不是資料庫中存在 的乙個字段值。而是根據查詢到的結果...