C 物件建立方式

2021-08-02 08:10:09 字數 966 閱讀 6133

原址

c++在建立物件的時候可以採用兩種方式:(例如類名為test) test test  或者 test* ptest = new test()。

這兩種方法都可以例項化乙個物件,但是這兩種方法有很大的區別,區別在於物件內容所在的記憶體空間不同,眾所周知,記憶體的分配方式有三種

(1)從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。 

(2)  在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束後在將這些區域性變數的記憶體空間**。在棧上分配記憶體空間效率很高,但是分配的記憶體容量有限。

(3) 從堆上分配的。程式在執行的時候用 malloc 或 new 申請任意多少的記憶體,程式設計師自己負責在何時用 free 或 delete 釋放記憶體。

不使用new建立的物件在棧中分配記憶體空間,自動呼叫析構函式刪除該物件;

使用new建立的物件在堆中分配記憶體空間,必須手動釋放該物件的記憶體空間。

[cpp]view plain

copy

ctest* ptest = 

newctest();  

delete

ptest;  

new之前不為該類物件分配任何記憶體空間,new申請的物件,則只有呼叫到delete時再會執行析構函式,如果程式退出而沒有執行delete則會造成記憶體洩漏。

[cpp]view plain

copy

ctest mtest;  

在建立之初就已經分配了記憶體空間,此種建立方式,使用完後不需要手動釋放,該類析構函式會自動執行

下面是自己總結的一些關於new建立類物件特點:

C 物件建立方式

c 在建立物件的時候可以採用兩種方式 例如類名為test test test 或者 test ptest new test 這兩種方法都可以例項化乙個物件,但是這兩種方法有很大的區別,區別在於物件內容所在的記憶體空間不同,眾所周知,記憶體的分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候...

C 物件建立方式

c 在建立物件的時候可以採用兩種方式 例如類名為test test test 或者 test ptest new test 這兩種方法都可以例項化乙個物件,但是這兩種方法有很大的區別,區別在於物件內容所在的記憶體空間不同,眾所周知,記憶體的分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候...

javascript物件建立方式

在ecmascript中無法建立類,所以開發人員就發明了一種函式,用函式來封裝,以特定介面建立物件的細節,如下面的例子所示 function createperson name,age,job return temp var person1 createperson nick 20,student ...