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

歡迎光臨散文網(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ó)家法律
平阳县| 宣恩县| 舟山市| 闻喜县| 苏州市| 丰原市| 根河市| 临泽县| 潍坊市| 灵武市| 西昌市| 肃宁县| 通城县| 榆林市| 威海市| 阿克| 和平县| 句容市| 会东县| 准格尔旗| 富锦市| 赣榆县| 天峨县| 青州市| 五大连池市| 汾阳市| 和顺县| 湘潭市| 康保县| 清流县| 石嘴山市| 白朗县| 洪雅县| 建湖县| 洪洞县| 民乐县| 阿图什市| 岑溪市| 乐亭县| 崇阳县| 革吉县|