因爲我已經從c#到C++,所有在C++中看起來都很瘋狂。 我只是想知道,如果有人能解釋我爲什麼我們這些種在C++中實例化的: 方法1:不同類型的在C++上實例化
ClassA obj1; // this is going to stack
方法2:
ClassA *obj1 = new ClassA(); //this is going to heap
,而我們沒有共同的實例化在C C#的方式++:
ClassA obj2 = new obj2();
和方法1一個問題我從ClassA的,但沒有()得到一個實例,這是確切地說,我感到困惑,爲什麼我們不得不這樣安心? 我們的ClassA有一個構造函數,但實例化沒有括號? 我們怎麼稱其構造函數?
P.S:我讀過這些主題:
Different methods for instantiating an object in C++
Stack, Static, and Heap in C++
What and where are the stack and heap?
C#沒有兩種實例化方式,因爲運行時爲您管理內存。 – 2013-12-08 11:03:48
在方法1中,obj是對ClassA對象的引用。在方法2中,obj是一個指向ClassA對象的指針。 C++中的new返回一個指向分配內存的指針。你必須告訴新建什麼類型的對象。這就是爲什麼第三個選項不起作用的部分原因。 obj2還沒有被定義爲一個對象。在代碼中的這一點上,它只是將被用作引用創建對象的標識符的文本。 – iheanyi 2014-05-16 16:45:20