C++類的兩種實例方式

C++類的實例有兩種,C#只有一種new的方式,有點不同。

先寫一個簡單的類:

class Apple{
public:
    int weight;
};

方式一:

#include <iostream>
#include "Apple.h"

using namespace std;

void main(){
    Apple apple;
    apple.weight = 1;
    cout<<apple.weight<<endl;
}

方式二:

#include <iostream>
#include "Apple.h"

using namespace std;

void main(){
    Apple *apple = new Apple();
    apple->weight = 2;
    cout<<apple->weight<<endl;
}

可以看到,一種是直接聲明+實例(Class class),一種是用new關鍵字(Class class = new Class()),這兩者都可以實例類,但是它們之間有不同之處。方式一是系統自動分配內存,數據存放在棧上,並且由系統自動釋放(運行超出作用域自動刪除);方式二是手動申請內存,數據放在堆上,需要手動釋放。此外可以發現,方式一實例後得到的是引用,方式二實例後得到的是指針。

因此方式二比較完整的實例代碼爲:

#include <iostream>
#include "Apple.h"
using namespace std;

void main(){
    Apple *apple = new Apple();
    apple->weight = 2;
    cout<<apple->weight<<endl;
    delete apple;
    apple = NUll;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章