日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 重载new和delete运算符

發(fā)布時間:2025/3/12 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 重载new和delete运算符 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

內(nèi)存管理運算符 new、new[]、delete 和 delete[] 也可以進行重載,其重載形式既可以是類的成員函數(shù),也可以是全局函數(shù)。一般情況下,內(nèi)建的內(nèi)存管理運算符就夠用了,只有在需要自己管理內(nèi)存時才會重載。

以成員函數(shù)的形式重載 new 運算符:

void * className::operator new( size_t size ){//TODO: }

以全局函數(shù)的形式重載 new 運算符:

void * operator new( size_t size ){//TODO: }

兩種重載形式的返回值相同,都是void *類型,并且都有一個參數(shù),為size_t類型。在重載 new 或 new[] 時,無論是作為成員函數(shù)還是作為全局函數(shù),它的第一個參數(shù)必須是 size_t 類型。size_t 表示的是要分配空間的大小,對于 new[] 的重載函數(shù)而言,size_t 則表示所需要分配的所有空間的總和。

size_t 在頭文件 <cstdio> 中被定義為typedef unsigned int size_t;,也就是無符號整型。

當(dāng)然,重載函數(shù)也可以有其他參數(shù),但都必須有默認值,并且第一個參數(shù)的類型必須是 size_t。

同樣的,delete 運算符也有兩種重載形式。以類的成員函數(shù)的形式進行重載:

void className::operator delete( void *ptr){//TODO: }

以全局函數(shù)的形式進行重載:

void operator delete( void *ptr){//TODO: }

兩種重載形式的返回值都是 void 類型,并且都必須有一個 void 類型的指針作為參數(shù),該指針指向需要釋放的內(nèi)存空間。

當(dāng)我們以類的成員函數(shù)的形式重載了new 和 delete 操作符,其使用方法如下:

C * c = new C; //分配內(nèi)存空間 //TODO: delete c; //釋放內(nèi)存空間

如果類中沒有定義 new 和 delete 的重載函數(shù),那么會自動調(diào)用內(nèi)建的 new 和 delete 運算符。

總結(jié)

以上是生活随笔為你收集整理的C++ 重载new和delete运算符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。