c++何時需要new物件
一、cstring str;
不用new的記憶體區域是在棧,會自動分配空間,一般在區域性變數時使用,函式結束後會自動釋放空間,
定義物件就是申明物件(靜態)
str有系統建立並釋放,你不要擔心會出現記憶體洩露,但是生命期只有在本區域的大括號內,出了大括號就沒用了。
建構函式應可以保證被執行,因為程式退出通路很多,你必須是正常的退出才可能保證析構函式被呼叫,當你建立乙個類物件時,建構函式就自動執行建立自己,當你不在需要這個物件時,析構函式自動把自己結束了(析構系統呼叫)。
二、cstring *str1 = new cstring;
用new的內在區域是在堆,要自己手動分配空間,使用完後要手動釋放空間,另外棧中空間的分配一般在編譯時就知道大小了,而如果要在執行時分配空間,就要使用堆了,
new 就是建立物件的例項並為它分配足夠的空間(動態)
str1是指標,要自己釋放,用不好很危險,用好了功能強大,因為他可以賦值給全域性的變數,一下子從區域性變數變成全域性變數,還能把物件作為函式返回值。
指標指向這個物件,那麼這個指標幾乎可以呼叫物件裡的所有成員函式,看你想調誰,調析構函式就執行析構函式(自己呼叫)
1.只有變數才不需要new.
2.物件是引用型的,變數則是傳值型的
3.變數是棧儲存,而物件一般是堆
C 何時需要NEW物件,new和定義物件的區別
c 何時需要 new物件 一 cstring str 不用new的記憶體區域是在棧,會自動分配空間,一般在區域性變數時使用,函式結束後會自動釋放空間,定義物件就是申明物件 靜態 str有系統建立並釋放,你不要擔心會出現記憶體洩露,但是生命期只有在本區域的大括號內,出了大括號就沒用了。建構函式應可以保...
C 用new和不用new建立類物件
1,new建立類物件,使用完後需使用delete刪除,跟申請記憶體類似。所以,new有時候又不太適合,比如在頻繁呼叫場合,使用區域性new類物件就不是個好選擇,使用全域性類物件或乙個經過初始化的全域性類指標似乎更加高效。2,非new建立類物件,建立方式,new物件指標作為函式引數和返回值需要手動釋放...
C 用new和不用new建立類物件區別
起初剛學c 時,很不習慣用new,後來看老外的程式,發現幾乎都是使用new,想一想區別也不是太大,但是在大一點的專案設計中,有時候不使用new的確會帶來很多問題。當然這都是跟new的用法有關的。new建立類物件,使用完後需使用delete刪除,跟申請記憶體類似。所以,new有時候又不太適合,比如在頻...