類對象的複製和拷貝問題

最近看到很多人討論一個問題,頗感興趣,於是在此作個記錄

問題是這樣的:

有類A的定義如下:

 

 

好,下面問題來了。注意看區別.

 

區別1:

 

void main()

{

   A  a;

  A  b=a ;//只拷貝,相當於 A b(a);

 

void main()

{

   A  a;

   A  b;

   a=b;//先賦值,後拷貝

}

 

區別2:

 

void main()

{

   A  a;

  A  b=a ;//執行兩次析構函數

 

void main()

{

   A  a;

   A  b;

   a=b;//執行三次析構函數

}

 

上面第二種情況會先產生一個臨時對象,它相當於:

 

void main()

{

   A   b;

   A  temp=b;

    A a=temp;

}

 

三個對象,當然要析構三次了

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