c++類的實例化,有沒有new的區別

A a;

A * a = new a();

以上兩種方式皆可實現類的實例化,有new的區別在於:

1.前者在堆棧中分配內存,後者爲動態內存分配,在一般應用中是沒有什麼區別的,但動態內存分配會使對象的可控性增強。

2.不加new在堆棧中分配內存

3.大程序用new,小程序直接申請

4.只是把對象分配在堆棧內存中

5.new必須delete刪除,不用new系統會自動回收內存

 

 

帶着疑惑網上找到這篇帖子,學習:

 

小弟 最近剛接觸 Visual C++

看到一本 vc++ 6.0的教程上 在 聲明瞭 一個類的對象後 沒有用類似於 C# 或 Java中的new 來實例化

而直接調用其公開成員,請問 vc++ 是不是可以這樣調用對象,還是書中有錯誤??

 

回覆:

靜態公開成員可以直接調用,動態的不行,C#和java也是這樣

 

只是形式不一樣

例如

class A

{

public:

int m_i;

};

在C++中

A a;是分配在棧上。也可以A* pa = new A;分配在堆上。

而在JAVA 或C#中

通過

A a = new A();

分配在託管堆上。

不論是用哪種方式,只要變量是public的都可以直接訪問

轉自:http://www.cnblogs.com/frustrate2/archive/2012/08/14/2637475.html

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