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

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

C/C++編程筆記:運(yùn)算符重載丨重載C++中的New和Delete運(yùn)算符

2020-10-27 22:07 作者:C語(yǔ)言編程__Plus  | 我要投稿

new和delete運(yùn)算符也可以像C ++中的其他運(yùn)算符一樣重載。New和Delete運(yùn)算符可以全局重載,也可以在特定類(lèi)中重載。

(1)如果使用某個(gè)類(lèi)的成員函數(shù)來(lái)重載這些運(yùn)算符,則意味著這些運(yùn)算符僅針對(duì)該特定類(lèi)才被重載。

(2)如果重載是在類(lèi)外部完成的(即它不是類(lèi)的成員函數(shù)),則只要您使用這些運(yùn)算符(在類(lèi)內(nèi)或類(lèi)外),都將調(diào)用重載的“ new”和“ delete”。這是全局超載


重載new運(yùn)算符的語(yǔ)法:

void *運(yùn)算符new(size_t size);

重載的new運(yùn)算符接收的大小為size_t類(lèi)型,該大小指定要分配的內(nèi)存字節(jié)數(shù)。重載的new的返回類(lèi)型必須為void *。重載的函數(shù)返回一個(gè)指向分配的內(nèi)存塊開(kāi)頭的指針。

重載delete運(yùn)算符的語(yǔ)法:

無(wú)效運(yùn)算符delete(void *);

該函數(shù)接收一個(gè)必須刪除的void *類(lèi)型的參數(shù)。函數(shù)不應(yīng)該返回任何東西。

注意:默認(rèn)情況下,重載的new和delete運(yùn)算符函數(shù)都是靜態(tài)成員。因此,他們無(wú)權(quán)訪問(wèn)此指針。

重載特定類(lèi)的new和delete運(yùn)算符


重載大小為16的新運(yùn)算符構(gòu)造函數(shù)稱為名稱:Yash年齡:24重載刪除運(yùn)算符

注意:在上述新的重載函數(shù)中,我們已經(jīng)通過(guò)new運(yùn)算符分配了動(dòng)態(tài)內(nèi)存,但是它應(yīng)該是global new運(yùn)算符,否則它將以遞歸形式

無(wú)效* p = new student();?//這將遞歸,因?yàn)?strong>new將會(huì)一次又一次地被重載。

void * p = :: new student();?// 這是對(duì)的

new和delete運(yùn)算符的全局重載


輸出:

新操作員重載 數(shù)組:0 1 2 3 4 刪除運(yùn)算符重載

注意:在上面的代碼中,在新的重載函數(shù)中,我們無(wú)法使用:: new int [5]分配內(nèi)存,因?yàn)樗鼘⒁赃f歸方式進(jìn)行。我們只需要使用malloc分配內(nèi)存。

為什么要重載new和Delete?

(1)重載的new運(yùn)算符函數(shù)可以接受參數(shù);因此,一個(gè)類(lèi)可以具有多個(gè)重載的新運(yùn)算符功能。這使程序員在自定義對(duì)象的內(nèi)存分配方面具有更大的靈活性。例如:


注意:代碼不僅將為單個(gè)字符分配內(nèi)存,還將使用#字符初始化分配的內(nèi)存。

(2)重載的new或delete運(yùn)算符還為類(lèi)的對(duì)象提供了垃圾回收。

(3)可以在重載的新運(yùn)算符函數(shù)中添加異常處理例程。

(4)有時(shí),您希望操作員是new并刪除它們,以執(zhí)行一些編譯器提供的版本不提供的自定義操作。例如,您可能會(huì)編寫(xiě)一個(gè)自定義運(yùn)算符delete,以用0覆蓋釋放的內(nèi)存,以提高應(yīng)用程序數(shù)據(jù)的安全性。

(5)我們可以在新函數(shù)中使用realloc()函數(shù)動(dòng)態(tài)地重新分配內(nèi)存。


(6)重載的新運(yùn)算符還使程序員能夠從其程序中榨取一些額外的性能。例如,在一個(gè)類(lèi)中,為了加快新節(jié)點(diǎn)的分配,維護(hù)了一個(gè)已刪除節(jié)點(diǎn)的列表,以便在分配新節(jié)點(diǎn)時(shí)可以重新使用其內(nèi)存。在這種情況下,重載的delete運(yùn)算符會(huì)將節(jié)點(diǎn)添加到列表中刪除的節(jié)點(diǎn)和重載的new運(yùn)算符將從列表中分配內(nèi)存,而不是從堆中分配內(nèi)存以加速內(nèi)存分配。當(dāng)刪除的節(jié)點(diǎn)列表為空時(shí),可以使用堆中的內(nèi)存。

另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車(chē),快人一步!

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

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

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來(lái)成長(zhǎng)!
另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

編程學(xué)習(xí)書(shū)籍分享:


編程學(xué)習(xí)視頻分享:



C/C++編程筆記:運(yùn)算符重載丨重載C++中的New和Delete運(yùn)算符的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
醴陵市| 射洪县| 永安市| 蒙自县| 谢通门县| 邳州市| 英吉沙县| 曲水县| 北海市| 荆州市| 西乌珠穆沁旗| 玛沁县| 噶尔县| 义马市| 长海县| 额尔古纳市| 昌乐县| 汽车| 蒙山县| 岐山县| 曲周县| 聂荣县| 连城县| 白银市| 沈丘县| 顺平县| 上蔡县| 江门市| 牡丹江市| 新源县| 正阳县| 白水县| 东乡族自治县| 黄平县| 平邑县| 三穗县| 合江县| 中宁县| 屯留县| 手游| 长春市|