考慮下面的代碼:
上述代碼有一個(gè)問(wèn)題,當(dāng)實(shí)現(xiàn)自我賦值的時(shí)候,pb對(duì)象已經(jīng)被刪除,此時(shí)又根據(jù)pb對(duì)象創(chuàng)建一個(gè)新的對(duì)象,造成錯(cuò)誤。 解決方法一: 在刪除之前添加一個(gè)證同測(cè)試: 代碼如下:
但是上述代碼若new 代碼處發(fā)生異常,則很可能導(dǎo)致返回一個(gè)指向已刪除內(nèi)存區(qū)域的指針。解決方法2:可以先創(chuàng)建一個(gè)新的pb,然后再對(duì)舊pb進(jìn)行刪除。
解決方法3: 使用copy and swap 技術(shù)
posted on 2011-05-06 22:22 kahn 閱讀(254) 評(píng)論(0) 編輯 收藏 引用
Powered by: C++博客 Copyright © kahn