A a, A( ), A*, new A( ) 的區別

A(): 是對象,是一個值,或者說一個內存塊;

A a :定義一個指向A對象的變量a,a其實就是一個靜態指針;

new A() :生成對象,並返回指向該對象的地址;

A* :定義一個存儲A對象指針的變量。

 

陷阱:

  1. A * a = & A();

錯誤,A()返回的是一個值,就像2這樣的值,不是變量,所以不能用&。

     2. A a ;  A* a_p = &a;

可以,但要確保 a、a_p的作用域相同,如果a_p的作用域大於a的,當離開a的作用域之後a_p的值將變成非法的,因爲a已經被銷燬了。

 

參考:淺談類對象和類指針 ,C++ 指針的兩種操作,通過指針賦值 & 對指針賦值 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章