C++9
C++類和new、delete操作符
在C++中,你可以像定義變量一樣來創建對象,如:Student stu; //對象已被實例化,已分配內存空間,可以使用了
stu.say(); //調用成員函數
這種情況下,系統會在棧區為對象分配內存。棧區是內存中的一塊區域,由系統自動分配和釋放,程序員無法操控,一般用來存放函數的參數值、局部變量、局部對象等。
當發生函數調用時,系統將函數參數、局部變量、局部對象依次壓入棧區;函數執行結束,再按照先進后出的原則將它們彈出(銷毀)。
對于大部分程序,這不會有什么問題。但當你希望在函數調用結束前銷毀對象時,你是無能為力的。或者你希望通過 for 循環來創建多個對象,這種方法同樣也做不到。
這個時候 new 和 delete 就派上了用場:使用 new 創建的對象,可以在任意時刻通過 delete 銷毀,而且只需要一個指針指向它。
以前面的 Student 類為例,可以這樣來動態創建對象:
new Student;
也可以使用構造函數:
new Student("小明", 15, 90.5f);
這樣,就在堆區為對象分配了內存,并調用了構造函數。
但是此時程序員還無法訪問這個對象,因為這個對象既沒有名字,也沒有指針指向它。這種對象稱為匿名對象,它確實存在,但無法訪問。
<
總結