五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:用C++編寫賦值運(yùn)算符,一般什么情況下用?

2021-05-13 20:09 作者:C語言編程__Plus  | 我要投稿

如果一個(gè)類不包含指針,則無需編寫賦值運(yùn)算符和復(fù)制構(gòu)造函數(shù)。編譯器為每個(gè)類創(chuàng)建一個(gè)默認(rèn)的復(fù)制構(gòu)造函數(shù)和賦值運(yùn)算符。當(dāng)我們擁有指針或文件句柄,網(wǎng)絡(luò)連接等資源的任何運(yùn)行時(shí)分配時(shí),編譯器創(chuàng)建的復(fù)制構(gòu)造函數(shù)和賦值運(yùn)算符可能不夠用。


例如,考慮以下程序。


以上程序的輸出為“ 10”。如果看一下main(),我們使用setValue()函數(shù)修改了“ t1”,但更改也反映在對(duì)象“ t2”中。這種類型的意外更改會(huì)引起問題。

由于上述程序中沒有用戶定義的賦值運(yùn)算符,因此編譯器將創(chuàng)建一個(gè)默認(rèn)的賦值運(yùn)算符,它將右側(cè)的“ ptr”復(fù)制到左側(cè)。因此,兩個(gè)“ ptr”都開始指向同一位置。

我們可以通過兩種方式解決上述問題。

1)不允許將一個(gè)對(duì)象分配給另一對(duì)象。我們可以創(chuàng)建自己的虛擬賦值運(yùn)算符并將其設(shè)為私有。

2)編寫自己的賦值運(yùn)算符,該運(yùn)算符進(jìn)行深度復(fù)制。

復(fù)制構(gòu)造函數(shù)也是如此。

以下是上述類的重載賦值運(yùn)算符的示例。


輸出:5

我們還應(yīng)該在上面的類中添加一個(gè)復(fù)制構(gòu)造函數(shù),以使諸如“ Test t3 = t4;”之類的語句成為可能。也不會(huì)造成任何問題。

注意賦值運(yùn)算符中的if條件。在重載賦值運(yùn)算符時(shí),我們必須檢查自我賦值。否則,分配對(duì)象本身可能會(huì)導(dǎo)致意想不到的結(jié)果。上面的“測(cè)試”類不需要進(jìn)行自賦值檢查,因?yàn)椤?ptr”始終指向一個(gè)整數(shù),因此我們可以重用相同的內(nèi)存。但通常,建議進(jìn)行自我分配檢查。

以上就是今天的全部內(nèi)容了。每日分享小知識(shí),希望對(duì)你有幫助~

另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

微信公眾號(hào):C語言編程學(xué)習(xí)基地

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!



C/C++編程筆記:用C++編寫賦值運(yùn)算符,一般什么情況下用?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
嘉善县| 新龙县| 荣成市| 临潭县| 宝兴县| 临高县| 大理市| 琼海市| 沈丘县| 建宁县| 垣曲县| 浙江省| 新营市| 拉萨市| 昌乐县| 大同县| 萨迦县| 星子县| 多伦县| 香格里拉县| 蒙城县| 精河县| 西平县| 临沧市| 佳木斯市| 称多县| 田林县| 金门县| 清原| 宾阳县| 房山区| 西峡县| 垫江县| 奈曼旗| 神农架林区| 体育| 汤阴县| 渭南市| 阿尔山市| 云梦县| 桐梓县|