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的都可以直接訪問。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM