C++編程析構(gòu)函數(shù)拷貝構(gòu)造函數(shù)使用示例詳解
首先定義一個類進行操作。
class MM { public: protected: int year; string name; }
構(gòu)造函數(shù)在類中默認(rèn)有一個無參的構(gòu)造函數(shù)
默認(rèn)的構(gòu)造函數(shù)為 類名(){};這個構(gòu)造函數(shù)
如果直接寫了構(gòu)造函數(shù)那么這個構(gòu)造函數(shù)將會沒有
構(gòu)造函數(shù)
class MM { public: //MM() {};//無參構(gòu)造函數(shù) MM(int year, string name) :year(year), name(name) {}; //有參構(gòu)造函數(shù) 在定義對象的時候必須傳參數(shù),沒參數(shù)會報錯 MM(int year, string name) { this->name = name; this->year = year; }//這兩個是一樣的 MM(int year, string name = "") :year(year) {}; //因為string 是缺省的 如果寫沒有構(gòu)造默認(rèn)為空 就是 MM mm(15);這里mm對象year=15 name=“”; //缺省只能左邊到右邊 protected: int year; string name; };
析構(gòu)函數(shù)
MM(){};就是對構(gòu)建的對象進行銷毀
析構(gòu)函數(shù)的使用是一個自動調(diào)用的過程不需要人為進行,當(dāng)對象的生命周期結(jié)束自動釋放
//析構(gòu)函數(shù)需要注意的點
1.當(dāng)對象存在指針的時候使用析構(gòu)函數(shù)時,析構(gòu)函數(shù)里面需要釋放指針的指向
class MM { public: MM(const char* str) { strcpy(this->str, str); } ~MM() { delete[] str; }; //這里需要釋放str內(nèi)存不然析構(gòu)函數(shù)只會釋放類不會釋放str protected: int year; string name; char* str; }; int main() { MM mm("kkk"); return 0; }
如果類中沒有指針就不用在析構(gòu)函數(shù)中去釋放指針指向
拷貝構(gòu)造(對對象進行賦值)//直接調(diào)用拷貝構(gòu)造不調(diào)用構(gòu)造函數(shù)
MM mm(15,"kkk"); //拷貝構(gòu)造的二種方式對對象進行賦值 MM mm1(mm); MM mm2 = mm; mm1.printfMM(); mm2.printfMM();
如果是通過匿名創(chuàng)建時匿名對象調(diào)用構(gòu)造函數(shù)
MM mm3 = MM(16, "jfsdl"); mm3.printfMM();
然后匿名對象賦值給對象調(diào)用的是拷貝構(gòu)造函數(shù)
拷貝構(gòu)造之深拷貝和淺拷貝
//淺拷貝 默認(rèn)也是淺拷貝就是賦值拷貝 MM(const MM&object) { this->str = object.str; } //深拷貝 //深拷貝就是通過指針申請指向然后進行賦值 MM(const MM& object) { int len = strlen(object.str) + 1; this->str = new char[len]; strcpy(str, object.str); }
深淺拷貝區(qū)別
淺拷貝就是進行了賦值操作
深拷貝是通過申請指針后再進行賦值(深拷貝析構(gòu)函數(shù)要釋放申請的指針)
謝謝大家的閱讀,如有不足請及時指出,萬分感激
以上就是C++編程析構(gòu)函數(shù)拷貝構(gòu)造函數(shù)使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C++編程析構(gòu)函數(shù)拷貝構(gòu)造函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VC List Control控件如何刪除選中的記錄實例詳解
這篇文章主要介紹了VC List Control控件如何刪除選中的記錄實例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟
這篇文章主要介紹了vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06