摘要:全局開內(nèi)存先構(gòu)造函數(shù)后若開辟空間失敗,會(huì)拋異常析構(gòu)函數(shù)先全局釋放內(nèi)存后這體現(xiàn)了封裝不是運(yùn)算符重載,是調(diào)用全局函數(shù),而函數(shù)里面包含了此外,和能夠進(jìn)行專屬類重載,也就是說(shuō),比如類,我們調(diào)用開辟,如果有專屬類重載,那會(huì)找到重載了
new = 全局operator new開內(nèi)存(先) + 構(gòu)造函數(shù)(后)
operator new = malloc ,若開辟空間失敗,會(huì)拋異常
delete = 析構(gòu)函數(shù)(先) + 全局operator delete釋放內(nèi)存(后)
operator delete = free
這體現(xiàn)了封裝
operator new/delete 不是運(yùn)算符重載,是調(diào)用全局函數(shù),而函數(shù)里面包含了malloc/free
此外,operator new和operator delete能夠進(jìn)行專屬類重載,也就是說(shuō),比如類A,我們調(diào)用new開辟A,如果A有專屬類重載,那new會(huì)找到重載了的類專屬的operator new,而不是全局的::operator new;
這可以用在我們不想用malloc開辟空間的時(shí)候
::表示全局域
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123353.html
摘要:對(duì)于申請(qǐng)內(nèi)存失敗,的處理是返回空指針,而的處理是拋異常對(duì)于自定義類型,會(huì)調(diào)用其構(gòu)造析構(gòu)函數(shù),而不會(huì)。內(nèi)存泄漏并不是指內(nèi)存在物理上的消失,而是應(yīng)用程序分配某段內(nèi)存后,因?yàn)樵O(shè)計(jì)錯(cuò)誤,失去了對(duì)該段內(nèi)存的控制,因而造成了內(nèi)存的浪費(fèi)。 ...
摘要:我們來(lái)介紹語(yǔ)言和中的區(qū)別和聯(lián)系。語(yǔ)言沒(méi)有函數(shù)重載,支持函數(shù)重載。語(yǔ)言中產(chǎn)生函數(shù)符號(hào)的規(guī)則是根據(jù)名稱產(chǎn)生,這也就注定了語(yǔ)言不存在函數(shù)重載的概念。簡(jiǎn)單來(lái)說(shuō),它和普通變量的區(qū)別只是不能做左值而已。需要注意的是,的指針有可能退化成語(yǔ)言的指針。 C語(yǔ)言雖說(shuō)經(jīng)常和C++在一起被大家提起,但可千萬(wàn)不要以為...
閱讀 3119·2021-11-19 09:40
閱讀 1577·2021-11-15 11:39
閱讀 690·2021-10-08 10:05
閱讀 2289·2021-09-03 10:29
閱讀 3420·2021-08-12 13:22
閱讀 2191·2019-08-30 15:54
閱讀 3725·2019-08-30 14:03
閱讀 2664·2019-08-30 13:45