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)、在析構函式執行時,虛函式表指標已被銷毀
#includeusingnamespace
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、轉換失敗:得到乙個異常操作資訊
#includeusingnamespace
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 被稱為偽列。不是資料庫中存在 的乙個字段值。而是根據查詢到的結果...