1. 程式人生 > >C++定義一個物件和new一個物件的區別與聯絡

C++定義一個物件和new一個物件的區別與聯絡

由於對C++的使用時斷斷續續的,所以今天拿起來看了,C++中一個最大的特色就是有了類的設計思想

基本後面的所有包括封裝,多型,繼承等都是基於類的思想完成的。

類到物件的過程就是例項化的過程,我經常會看到兩種方式,一種是這樣的:

class A{

。。。

}

void main(){

A a;

。。。

}

另外一種是這樣的:

class A{

。。。

}

void main(){

A *a=new A();

}

上面兩種方式一種可以看著是在主函式定義一個物件,另一個可以看著是new一個物件,主要有以下幾點不同:

1、他們的儲存空間不同,直接定義一個物件放在棧上,new一個物件放在堆上

2、使用場合不同,由於棧較小並且主要用於儲存臨時變數,所以定義一個物件在{}的作用域生命週期就完了,new的物件放在堆上,可以通過函式返回他的指標,並且需要手工去銷燬這個物件否則會出現記憶體洩漏

3、new的特性:

  • new建立類物件需要指標接收,一處初始化,多處使用
  • new建立類物件使用完需delete銷燬
  • new建立物件直接使用堆空間,而區域性不用new定義類物件則使用棧空間
  • new物件指標用途廣泛,比如作為函式返回值、函式引數等
  • 頻繁呼叫場合並不適合new,就像new申請和釋放記憶體一樣
4、new的特性: