最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++編程析構(gòu)函數(shù)拷貝構(gòu)造函數(shù)使用示例詳解

 更新時(shí)間:2021年11月18日 10:26:39   作者:xr415  
這篇文章主要為大家介紹了C++編程構(gòu)造函數(shù)中析構(gòu)函數(shù)及拷貝構(gòu)造函數(shù)的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助

首先定義一個(gè)類進(jìn)行操作。

class MM
{
public:
protected:
    int year;
    string name;
}

構(gòu)造函數(shù)在類中默認(rèn)有一個(gè)無(wú)參的構(gòu)造函數(shù)

默認(rèn)的構(gòu)造函數(shù)為 類名(){};這個(gè)構(gòu)造函數(shù)

如果直接寫(xiě)了構(gòu)造函數(shù)那么這個(gè)構(gòu)造函數(shù)將會(huì)沒(méi)有

構(gòu)造函數(shù)

class MM
{
public:
	//MM() {};//無(wú)參構(gòu)造函數(shù)
	MM(int year, string name) :year(year), name(name) {};
	//有參構(gòu)造函數(shù) 在定義對(duì)象的時(shí)候必須傳參數(shù),沒(méi)參數(shù)會(huì)報(bào)錯(cuò)
	MM(int year, string name)
	{
		this->name = name;
		this->year = year;
	}//這兩個(gè)是一樣的
	MM(int year, string name = "") :year(year) {};
	//因?yàn)閟tring 是缺省的 如果寫(xiě)沒(méi)有構(gòu)造默認(rèn)為空
    就是 MM mm(15);這里mm對(duì)象year=15 name=“”;
	//缺省只能左邊到右邊
 protected:
	int year;
	string name;
};

析構(gòu)函數(shù)

MM(){};就是對(duì)構(gòu)建的對(duì)象進(jìn)行銷毀

 析構(gòu)函數(shù)的使用是一個(gè)自動(dòng)調(diào)用的過(guò)程不需要人為進(jìn)行,當(dāng)對(duì)象的生命周期結(jié)束自動(dòng)釋放

 //析構(gòu)函數(shù)需要注意的點(diǎn)

1.當(dāng)對(duì)象存在指針的時(shí)候使用析構(gòu)函數(shù)時(shí),析構(gòu)函數(shù)里面需要釋放指針的指向

class MM
{
public:
	MM(const char* str)
	{
		strcpy(this->str, str);
	}
	~MM() { delete[] str; };
//這里需要釋放str內(nèi)存不然析構(gòu)函數(shù)只會(huì)釋放類不會(huì)釋放str
	
protected:
	int year;
	string name;
	char* str;
};
int main()
{
	MM mm("kkk");
	return 0;
}

如果類中沒(méi)有指針就不用在析構(gòu)函數(shù)中去釋放指針指向

拷貝構(gòu)造(對(duì)對(duì)象進(jìn)行賦值)//直接調(diào)用拷貝構(gòu)造不調(diào)用構(gòu)造函數(shù)

	MM mm(15,"kkk");
	//拷貝構(gòu)造的二種方式對(duì)對(duì)象進(jìn)行賦值
	MM mm1(mm);
	MM mm2 = mm;
	mm1.printfMM();
	mm2.printfMM();

如果是通過(guò)匿名創(chuàng)建時(shí)匿名對(duì)象調(diào)用構(gòu)造函數(shù)

MM mm3 = MM(16, "jfsdl");
	mm3.printfMM();

然后匿名對(duì)象賦值給對(duì)象調(diào)用的是拷貝構(gòu)造函數(shù)

拷貝構(gòu)造之深拷貝和淺拷貝

//淺拷貝 默認(rèn)也是淺拷貝就是賦值拷貝
	MM(const MM&object)
	{
		this->str = object.str;
	}
//深拷貝
//深拷貝就是通過(guò)指針申請(qǐng)指向然后進(jìn)行賦值
	MM(const MM& object)
	{
		int len = strlen(object.str) + 1;
		this->str = new char[len];
		strcpy(str, object.str);
	}

深淺拷貝區(qū)別

淺拷貝就是進(jìn)行了賦值操作

深拷貝是通過(guò)申請(qǐng)指針后再進(jìn)行賦值(深拷貝析構(gòu)函數(shù)要釋放申請(qǐng)的指針)

謝謝大家的閱讀,如有不足請(qǐng)及時(shí)指出,萬(wàn)分感激

以上就是C++編程析構(gòu)函數(shù)拷貝構(gòu)造函數(shù)使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C++編程析構(gòu)函數(shù)拷貝構(gòu)造函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)中棧的實(shí)現(xiàn)代碼

    C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)中棧的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)中棧的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • C++11異步與通信之std::async的使用

    C++11異步與通信之std::async的使用

    std::async 異步運(yùn)行一個(gè)函數(shù),將返回值保存在std::future中,本文主要介紹了C++11異步與通信之std::async的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • FFmpeg實(shí)現(xiàn)將編碼后數(shù)據(jù)保存成mp4

    FFmpeg實(shí)現(xiàn)將編碼后數(shù)據(jù)保存成mp4

    這篇文章主要為大家詳細(xì)介紹了FFmpeg如何實(shí)現(xiàn)將編碼后數(shù)據(jù)保存成mp4,即從內(nèi)存塊中獲取原始數(shù)據(jù),然后依次進(jìn)行解碼、編碼、最后保存成mp4視頻文件,感興趣的可以了解一下
    2023-08-08
  • 基于VS2019配置opencv4.0的方法步驟

    基于VS2019配置opencv4.0的方法步驟

    這篇文章主要介紹了基于VS2019配置opencv4.0的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Qt實(shí)現(xiàn)繪制多個(gè)設(shè)備的流量曲線圖詳解

    Qt實(shí)現(xiàn)繪制多個(gè)設(shè)備的流量曲線圖詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt開(kāi)發(fā)繪制多個(gè)設(shè)備的流量曲線圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下
    2023-01-01
  • C語(yǔ)言如何求整數(shù)的位數(shù)及各位數(shù)字之和

    C語(yǔ)言如何求整數(shù)的位數(shù)及各位數(shù)字之和

    這篇文章主要介紹了C語(yǔ)言如何求整數(shù)的位數(shù)及各位數(shù)字之和,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語(yǔ)言實(shí)現(xiàn)彈跳小球

    C語(yǔ)言實(shí)現(xiàn)彈跳小球

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)彈跳小球,設(shè)置了小球分?jǐn)?shù)及過(guò)關(guān)難度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語(yǔ)言關(guān)鍵字auto與register的深入理解

    C語(yǔ)言關(guān)鍵字auto與register的深入理解

    本篇文章是對(duì)c語(yǔ)言關(guān)鍵字auto與register的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++的array和&array有什么區(qū)別

    C++的array和&array有什么區(qū)別

    本文主要介紹了C++的array和&array有什么區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C++內(nèi)存管理詳解使用方式

    C++內(nèi)存管理詳解使用方式

    內(nèi)存管理是C++最令人切齒痛恨的問(wèn)題,也是C++最有爭(zhēng)議的問(wèn)題,C++高手從中獲得了更好的性能更大的自由,C++菜鳥(niǎo)的收獲則是一遍—遍的檢查代碼和對(duì)C++的痛恨,但內(nèi)存管理在C++中無(wú)處不在,內(nèi)存泄漏幾乎在每個(gè)C++程序中都會(huì)發(fā)生,要想成為C++高手,內(nèi)存管理這關(guān)是必須過(guò)的
    2022-04-04

最新評(píng)論

普兰县| 五华县| 江城| 河北区| 宁化县| 长治市| 新野县| 老河口市| 临高县| 仁布县| 光泽县| 屯留县| 宣威市| 朝阳市| 紫云| 泰宁县| 宜宾县| 陵川县| 平定县| 凤台县| 烟台市| 新蔡县| 搜索| 仁化县| 台北市| 阿克| 曲阜市| 芷江| 牡丹江市| 常熟市| 怀集县| 普兰店市| 江安县| 黑龙江省| 托克托县| 齐齐哈尔市| 开阳县| 海伦市| 海南省| 苏尼特左旗| 东方市|