[C++]顯示呼叫建構函式和解構函式

丫就是熊個貓貓發表於2016-12-13

建構函式和解構函式可不可以顯示呼叫:

class A

{

  public:

       A()

       {

            cout<<"a cnostructor"<<endl;

       }

       ~A()

       {

            cout<<" a destructor"<<endl;

       }

};

 

void main()

{

     A a;

     a.A::A();//顯示呼叫建構函式,寫成a.A()會報錯。

     a.~A();//顯示呼叫解構函式,但是此時物件a並沒有銷燬。

}

此時的輸出結果是:

a constructor

a constructor  //顯示呼叫建構函式的結果。

a destrucotr   //顯示呼叫解構函式的結果,此時物件並沒有銷燬。

a destructor   //物件銷燬時自動呼叫解構函式。

 

總結:顯示呼叫建構函式和解構函式就想呼叫一般的函式一樣,並不意味著建立或銷燬物件。但是注意,如果建構函式中動態分配了空間,則顯示呼叫建構函式會出現記憶體洩露;如果解構函式中釋放動態分配的空間,則會出現多次釋放統一記憶體,會出現嚴重錯誤。

轉自:http://blog.csdn.net/piratejk/article/details/4693316

相關文章