2013-02-12 75 views
3

我正在閱讀「Thinking in C++」的第13章。下面來自這本書。C++中的新運算符

MyType * fp = new MyType(1,2);

在運行時, 的malloc(的sizeof(的MyType))的等效被調用,和MyType的構造是 稱爲用所得的地址作爲該指針,使用(1,2)作爲 參數名單。在指針分配給fp時。

我被大膽的句子搞糊塗了。這是什麼意思?

回答

5

這是一個非常鬆散的解釋,但它基本上說,結果是一個內存位置,就像malloc將返回,並在該內存位置的物體構造(this是指向當前對象)使用構造與該參數列表。

+1

強調_very鬆散explain_,請參見[this](http://stackoverflow.com/questions/7194127/how-should-i-write-iso-c-standard-conformant-custom-new-and- delete-operators /)多少'operator new'必須超過'malloc' – David 2013-02-12 21:56:27

+0

還有一個問題,何時以及如何對這個指針進行初始化? – Fihop 2013-02-12 22:19:52

+0

@FihopZz創建對象時 - 構造函數體進入之前和成員初始化之前。 – 2013-02-12 22:26:41

4

new運算符動態分配內存時,它返回一個指向該內存的指針(類似於C中的malloc()工作方式)。在C++中,每個非靜態方法都可以訪問它所調用的當前對象(否則世界各地的C++程序員將面臨嚴重的麻煩)。這也是構造函數中方法的「隱含參數」,可以通過關鍵字this訪問它。

這句話的含義是,在創建對象之後,操作員將調用剛分配的內存上的構造函數因爲這是唯一有意義的東西。 :)

+0

@PeteBecker讓它成爲... – 2013-02-12 21:58:38

+0

還有一個問題,這個指針何時以及如何初始化? – Fihop 2013-02-12 22:20:13

+0

@FihopZz這裏並將其分配給分配的內存區域的地址。 – 2013-02-12 22:20:53