欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年11月18日 10:26:39   作者:xr415  
這篇文章主要為大家介紹了C++編程構(gòu)造函數(shù)中析構(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)文章

  • C語言實踐設(shè)計開發(fā)飛機游戲

    C語言實踐設(shè)計開發(fā)飛機游戲

    飛機大戰(zhàn)想必是很多人童年時期的經(jīng)典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用C語言寫一個簡單的飛機大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • C++實現(xiàn)動態(tài)分配const對象實例

    C++實現(xiàn)動態(tài)分配const對象實例

    這篇文章主要介紹了C++實現(xiàn)動態(tài)分配const對象實例,包括了const對象的創(chuàng)建、刪除及應(yīng)用實例,需要的朋友可以參考下
    2014-10-10
  • C++代碼實現(xiàn)逆波蘭表達式

    C++代碼實現(xiàn)逆波蘭表達式

    這篇文章主要為大家詳細(xì)介紹了C++代碼實現(xiàn)逆波蘭表達式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C程序中Ubuntu、stm32的內(nèi)存分配問題

    C程序中Ubuntu、stm32的內(nèi)存分配問題

    這篇文章主要介紹了C程序中Ubuntu、stm32的內(nèi)存分配問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 帶你了解C++的IO流

    帶你了解C++的IO流

    這篇文章主要介紹了C++ IO流的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-09-09
  • C++之string類對象的容量操作詳解

    C++之string類對象的容量操作詳解

    通過在網(wǎng)站上的資料搜集,得到了很多關(guān)于string類對象的容量操作,通過對這些資料的整理和加入一些自己的代碼,希望能夠給你帶來幫助
    2021-08-08
  • 詳解如何用c++實現(xiàn)平衡二叉樹

    詳解如何用c++實現(xiàn)平衡二叉樹

    平衡二叉樹(Balanced Binary Tree)又被稱為AVL樹(有別于AVL算法),由前蘇聯(lián)的數(shù)學(xué)家Adelse-Velskil和Landis在1962年提出的高度平衡的二叉樹,根據(jù)科學(xué)家的英文名也稱為AVL樹。本文介紹了它的原理和如何用C++代碼來實現(xiàn)
    2021-06-06
  • VC List Control控件如何刪除選中的記錄實例詳解

    VC List Control控件如何刪除選中的記錄實例詳解

    這篇文章主要介紹了VC List Control控件如何刪除選中的記錄實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟

    vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟

    這篇文章主要介紹了vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • C++用函數(shù)對算法性能進行測試

    C++用函數(shù)對算法性能進行測試

    算法無處不在,算法是程序的靈魂,而數(shù)據(jù)結(jié)構(gòu)則是程序的骨架,二者共同構(gòu)成了程序,那么如何評估算法的性能呢?理論上可以通過計算時間復(fù)雜度的方法來評估,但這是理性的認(rèn)識,我們還有一種直觀的評估方法,那就是程序執(zhí)行的時間
    2022-08-08

最新評論