析构函数和动态内存管理
生活随笔
收集整理的這篇文章主要介紹了
析构函数和动态内存管理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
析構(gòu)函數(shù)
當(dāng)類的對象撤銷時(shí),析構(gòu)函數(shù)被隱式調(diào)用。析構(gòu)函數(shù)不是釋放內(nèi)存,而是釋放內(nèi)存前進(jìn)行掃尾工作。
對象何時(shí)撤銷?1,靜態(tài)分配的,生存期過后撤銷。2,動態(tài)分配的,delete時(shí)撤銷。
析構(gòu)函數(shù)的命名 ~類型( ),析構(gòu)函數(shù)沒有形參和返回值。
一個(gè)類只能有一個(gè)析構(gòu)函數(shù),如果程序員不顯示的提供析構(gòu)函數(shù),編譯器提供默認(rèn)的析構(gòu)函數(shù)。
為包含動態(tài)分配的內(nèi)存的類和使用系統(tǒng)資源的類構(gòu)造適合的析構(gòu)函數(shù)。
動態(tài)內(nèi)存管理
//Cat.h #include<string> #include<iostream> class Cat { private:std::string name;int age; public:Cat() {name = "huahua";age = 0;}Cat(const std::string &name,int age) {this->name = name;this->age = age;}~Cat() {std::cout << name << "析構(gòu)...\n";} }; #include<string> #include<cstdlib> #include"Cat.h" using namespace std; int main() {double *ptr = new double(3.14);delete ptr;//釋放單個(gè)變量,deleteptr = nullptr;//必須置為nullptrint *arr = new int[10]();//()的意思默認(rèn)初始化,基本數(shù)據(jù)類型初始化為0,bool初始化false,//指針nullptr,對象調(diào)用默認(rèn)構(gòu)造函數(shù)delete[] arr;//釋放數(shù)組delete[]arr = nullptr;Cat *c1 = new Cat("mimi", 1);delete c1;Cat *catArr = new Cat[3]();delete[] catArr;catArr = nullptr;system("pause");return 0; }?
mimi析構(gòu)...
huahua析構(gòu)...
huahua析構(gòu)...
huahua析構(gòu)...
請按任意鍵繼續(xù). . .
轉(zhuǎn)載于:https://www.cnblogs.com/afreeman/p/8464501.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的析构函数和动态内存管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: modscan
- 下一篇: IMP导入报语句超过缓冲区长度