藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


關於「位拷貝」和「值拷貝」的問題?

:::「缺省的拷貝構造函數」和「缺省的賦值函數」均採用「位拷貝」而非「值拷貝」的方式來實現,倘若類中含有指針變量,這兩個函數注定將出錯。


請哪位高手能具體為我講一下關於:「位拷貝」和「值拷貝」的區別嗎???

謝謝。 :)

關於「位拷貝」和「值拷貝」的問題?

-->
比如你的一個類裡有一個char *pstr,這是一個字符串指針,
     你在生成這個類的對象時,對這個指針初始化,使之指向一個
字符串,但這個字符串是不屬於這個類的對象的,是在外部
定義的一個字符串。這樣,當你用缺省的拷貝構造函數」和「缺省的賦值函數「
時,初始化或賦值另一個對像時,另一個對像裡面的pstr指針也指向這個字符串,也就是2個對象都指向這個字符串。你想一想,要是一個對像銷毀了,把它指向的字符串也釋放了,另一個對像銷毀時會怎麼樣?這就是「位拷貝」的概念。
     相反,如果你自己實現缺省的拷貝構造函數」和「缺省的賦值函數」,
用在初始化或賦值另一個對像時,使得重新申請空間,拷貝第一個對像所指向的字符串,然後把新申請的空間的指針賦給pstr,這就是「值拷貝」。好好看看書吧,很多書裡面說得都很明白。

關於「位拷貝」和「值拷貝」的問題?

謝謝樓上的高手指教。。。。。。。。。。。。。。。。。

關於「位拷貝」和「值拷貝」的問題?

定義一個複製構造函數也可以解決這個問題吧。



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com