close

好像開始工作後就沒上來寫什麼東西了

一方面是很悶... 一方面還是很悶...XDDD

但想想應該是不能荒廢才對

 

今天突然想到這個問題,就來查查然後記錄一下吧

簡單寫寫就行了XD

 

首先直觀上的看,new是一個operator,malloc是一個function

也就是說new是可以被overload的,也就是說每個class可以擁有自己的new

另外new是知道類型才去配置記憶體的,而malloc只是依照bytes的數量去配置記憶體

其實大概就是這樣

如果是在寫C++的話,基本上就不要用malloc了,全部用new吧

 

至於virtual destructor嘛,其實概念上也很簡單

一般來說在建構物件的時候,都是從Base物件的建構子開始執行,然後去執行Derived物件的建構子

解構的時候則是倒過來,會先從Derived物件的解構子開始執行

 

但是解構的時候其實物件已經建出來了,依照物件呼叫方法的模式

如果不是virtual的方法的話,是不會去呼叫Derived物件的方法的,只會呼叫Base物件的方法

所以前面說會先呼叫Derived物件的解構子這件事是不成立的,因為Derived物件的解構子不是virtual方法

基於這個原因,原則上解構子都要是virtual的才對,否則有些Derived物件的資源可能就不會被正確的釋放,就會造成memory leak之類的

 

好吧今天就記這兩個問題吧

我想因為最近比較沒時間跟心情去學習,這邊就會比較少更新了

看看有沒有哪天會回復吧... 再說囉XDDD

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 頁頁頁六滴 的頭像
    頁頁頁六滴

    人森很精彩,所以要把所有事情都記起來=ˇ=

    頁頁頁六滴 發表在 痞客邦 留言(1) 人氣()