c++ 建立對象的三種方法

c++有三種方法建立對象ios

結合代碼來看c++

複製代碼

1 #include <iostream>  
 2 using namespace std;  
 3 class  Test {   
 4  5   private:  
 6   public:  
 7       add()
 8       {
 9          int x,y,sum;
10         x=5;
11          y=5;
12          sum=x+y;
13          cout<<sum<<endl;
14      }
15  };  
16  void main()  
17  {  
18     Test test1;  //棧中分配  ,由操做系統進行內存的分配和管理
19     Test test2 = Test;  //棧中分配  ,由操做系統進行內存的分配和管理
20     Test *test3=new Test();  //堆中分配  ,由管理者進行內存的分配和管理,用完必須delete(),不然可能形成內存泄漏
21     test1.add();
22     test2.add();//"." 是結構體成員引用
23     test3->add();//"->"是指針引用
24     delete(test3);
25     system("pause"); 
26 }

複製代碼

 

第一種和第二種沒什麼區別,一個隱式調用,一個顯式調用,二者都是在進程虛擬地址空間中的棧中分配內存。棧是系統數據結構,對於線程/進程是惟一的,它的分配和釋放由操做系統決定,不須要由開發者來管理。在執行函數時,函數內局部變量的存儲單元能夠在棧上建立,函數執行完畢,系統會自動釋放這些存儲單元。第三種使用了new,在堆中分配了內存,堆上的內存分配,亦稱動態內存分配。程序在運行的期間用malloc申請的內存,這部份內存由程序員本身負責管理,其生存期由開發者決定:在什麼時候分配,分配多少,並在什麼時候用free來釋放該內存。這是惟一能夠由開發者參與管理的內存。使用的好壞直接決定系統的性能和穩定。注意:棧中內存的分配和管理由操做系統決定,而堆中內存的分配和管理由管理者決定。程序員

咱們須要的內存不多,你又能肯定你到底須要多少內存時,用棧。當你須要在運行時才知道你到底須要多少內存時,請用堆。數據結構

 

 

關於new建立類對象特色:函數

 

  • new建立類對象須要指針接收,一處初始化,多處使用
  • new建立類對象使用完需delete銷燬
  • new建立對象直接使用堆空間,而局部不用new定義類對象則使用棧空間
  • new對象指針用途普遍,好比做爲函數返回值、函數參數等
  • 頻繁調用場合並不適合new,就像new申請和釋放內存同樣
相關文章
相關標籤/搜索