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
全站熱搜