最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)遵守國家法律
依兰县| 新安县| 雷山县| 防城港市| 宁陕县| 绥阳县| 南木林县| 赤峰市| 陆河县| 正阳县| 鄂托克旗| 五华县| 莲花县| 阿合奇县| 神农架林区| 苍溪县| 丽水市| 菏泽市| 金溪县| 莱西市| 项城市| 清丰县| 宁城县| 通化县| 永清县| 宜宾市| 灯塔市| 宁海县| 新宁县| 塔城市| 灵川县| 出国| 隆德县| 原平市| 本溪| 叶城县| 呼伦贝尔市| 桓台县| 清流县| 翁源县| 鄂伦春自治旗|