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建立類對象特色:函數