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