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

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

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

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

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)建的對象進(jìn)行銷毀

 析構(gòu)函數(shù)的使用是一個自動調(diào)用的過程不需要人為進(jìn)行,當(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)造(對對象進(jìn)行賦值)//直接調(diào)用拷貝構(gòu)造不調(diào)用構(gòu)造函數(shù)

	MM mm(15,"kkk");
	//拷貝構(gòu)造的二種方式對對象進(jìn)行賦值
	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;
	}
//深拷貝
//深拷貝就是通過指針申請指向然后進(jìn)行賦值
	MM(const MM& object)
	{
		int len = strlen(object.str) + 1;
		this->str = new char[len];
		strcpy(str, object.str);
	}

深淺拷貝區(qū)別

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

深拷貝是通過申請指針后再進(jìn)行賦值(深拷貝析構(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)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    C語言實現(xiàn)彈跳小球

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

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

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

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

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

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

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

最新評論

宁远县| 哈密市| 印江| 双柏县| 德昌县| 天柱县| 安塞县| 丘北县| 龙州县| 扬州市| 儋州市| 上栗县| 和田市| 东明县| 汾西县| 扶绥县| 太原市| 即墨市| 三都| 汶川县| 邢台市| 沂源县| 金秀| 浙江省| 裕民县| 丰镇市| 永胜县| 新竹市| 福清市| 石柱| 张家港市| 平武县| 论坛| 偏关县| 舒兰市| 南城县| 双流县| 凤庆县| 会宁县| 文水县| 博野县|