亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++分析構(gòu)造函數(shù)與析造函數(shù)的特點(diǎn)梳理

 更新時(shí)間:2022年05月09日 11:38:17   作者:Gy648  
本文對(duì)類的構(gòu)造函數(shù)和析構(gòu)函數(shù)進(jìn)行總結(jié),主要包括了構(gòu)造函數(shù)的初始化、重載、使用參數(shù)和默認(rèn)參數(shù),拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù),希望能幫助讀者在程序開(kāi)發(fā)中更好的理解類,屬于C/C++基礎(chǔ)

構(gòu)造函數(shù)的調(diào)用

默認(rèn)情況下編譯器至少給一個(gè)類添加3個(gè)函數(shù)

1.默認(rèn)構(gòu)造函數(shù)(無(wú)參,函數(shù)體實(shí)現(xiàn))--完成對(duì)象的初始化

2.默認(rèn)析構(gòu)函數(shù)(無(wú)參,函數(shù)體為空)--完成對(duì)象的清理

3.默認(rèn)拷貝構(gòu)造函數(shù),屬性進(jìn)行值拷貝

規(guī)則:

如果用戶定義了有參構(gòu)造,c++不會(huì)提供無(wú)參構(gòu)造,但是提供默認(rèn)拷貝構(gòu)造

如果用戶定義了拷貝構(gòu)造函數(shù),c++不會(huì)在提供其他函數(shù)

類名(){}

構(gòu)造函數(shù)的語(yǔ)法

1,沒(méi)有返回值,也不寫(xiě)void;

2,函數(shù)名稱與類名相同;

3,構(gòu)造函數(shù)可以有參數(shù),因此可以發(fā)生重載;

4,程序在調(diào)用對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù),無(wú)需手動(dòng)調(diào)用且只調(diào)用一次

析造函數(shù)~類名()

1.析造函數(shù),沒(méi)有返回值也不寫(xiě)void

2.函數(shù)名稱與類名相同在前面加上~

3.構(gòu)造函數(shù)不可以有參數(shù),因此不可以發(fā)生重載

4.程序在對(duì)象銷毀會(huì)自動(dòng)調(diào)用析構(gòu),與構(gòu)造函數(shù)的調(diào)用規(guī)則相同

構(gòu)造函數(shù)的分類及調(diào)用

1.按照參數(shù)分類為 無(wú)參構(gòu)造和 有參構(gòu)造

class person
{
public:
    person()
    {
    cout<<"無(wú)參構(gòu)造的調(diào)用"<<endl;
    }
    person(int a)
    {
    cout<<"有參構(gòu)造的調(diào)用"<<endl;
    }
};

2.按照類型分為 普通構(gòu)造和 拷貝構(gòu)造

person(const person& p)
{
}

拷貝構(gòu)造的語(yǔ)法

調(diào)用構(gòu)造函數(shù)的方法

void test()
{
    //1.括號(hào)法
    person p1;//默認(rèn)無(wú)參構(gòu)造調(diào)用
    person p2(10);//默認(rèn)有參構(gòu)造的調(diào)用
     preson p3(p2);//拷貝構(gòu)造的調(diào)用;
    //若是這樣寫(xiě) 下面這行代碼會(huì)被認(rèn)為是編譯器的聲明
     person p1();  // void func();
   // 無(wú)法完成函數(shù)的調(diào)用
    2.顯示法
    person p1;
    person p2=person(10);
    person p3=person(p2);
    // 匿名對(duì)象
   person(10);//特點(diǎn):當(dāng)前行執(zhí)行結(jié)束后,系統(tǒng)會(huì)立即回收匿名對(duì)象
    // 3.隱式轉(zhuǎn)換法
    person p4=10;// 相當(dāng)于 寫(xiě)了 person p4 =person(10);
    person p5=p4;
}

拷貝構(gòu)造的調(diào)用時(shí)機(jī)

1.使用一個(gè)已經(jīng)創(chuàng)建完畢的對(duì)象來(lái)初始化一個(gè)新對(duì)象

2.值傳遞的形式給函數(shù)參數(shù)傳值

class p
{
};
void dowork(person p )//形參p
{
}
void test02()
{
    person p;
    dowork(p);// 相當(dāng)于發(fā)生了隱式類型轉(zhuǎn)換 傳入值拷貝 person p=p;
}

3.值方式返回局部對(duì)象

深拷貝與淺拷貝

如果利用編譯器提供的拷貝構(gòu)造函數(shù)

會(huì)做淺(值)拷貝的操作(會(huì)使得new的對(duì)象指針指向同一個(gè)地址),會(huì)帶來(lái)對(duì)堆區(qū)內(nèi)存持續(xù)釋放的問(wèn)題

如果堆區(qū)開(kāi)辟了內(nèi)存,可以在析構(gòu)函數(shù)中釋放;

對(duì)于拷貝構(gòu)造函數(shù),可以自己實(shí)現(xiàn)一個(gè)拷貝構(gòu)造函數(shù)(深拷貝)(new一個(gè)新的對(duì)象實(shí)現(xiàn)拷貝構(gòu)造)

總結(jié): 如果屬性有在堆區(qū)開(kāi)辟,一定要自己提供拷貝構(gòu)造函數(shù),防止淺拷貝帶來(lái)的問(wèn)題

初始化列表

c++提供了初始化列表語(yǔ)法用來(lái)初始化屬性

class person
{
    person(int a,int b,int c):m_a(a),m_b(b),m_c(c);
    {
    }
    int m_a;
    int m_b;
    int m_c;
};

到此這篇關(guān)于C++分析構(gòu)造函數(shù)與析造函數(shù)的特點(diǎn)梳理的文章就介紹到這了,更多相關(guān)C++構(gòu)造函數(shù)與析造函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言中隊(duì)列的結(jié)構(gòu)和函數(shù)接口的使用示例

    C語(yǔ)言中隊(duì)列的結(jié)構(gòu)和函數(shù)接口的使用示例

    隊(duì)列只允許一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO的性質(zhì);隊(duì)列可用數(shù)組和鏈表 的方法實(shí)現(xiàn),使用鏈表的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些,因?yàn)槿绻褂脭?shù)組節(jié),出隊(duì)列時(shí)刪去首元素需要將整個(gè)數(shù)組前移,效率比較低
    2023-02-02
  • C++實(shí)現(xiàn)stack與queue數(shù)據(jù)結(jié)構(gòu)的模擬

    C++實(shí)現(xiàn)stack與queue數(shù)據(jù)結(jié)構(gòu)的模擬

    stack是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行 元素的插入與提取操作;隊(duì)列是一種容器適配器,專門用于在FIFO上下文(先進(jìn)先出)中操作,其中從容器一端插入元素,另一端提取元素
    2023-04-04
  • gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解

    gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解

    這篇文章主要介紹了gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++ deque與vector對(duì)比的優(yōu)缺點(diǎn)

    C++ deque與vector對(duì)比的優(yōu)缺點(diǎn)

    這篇文章主要介紹了C++中deque與vector相比的優(yōu)勢(shì)與劣勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • C語(yǔ)言深入講解函數(shù)的使用

    C語(yǔ)言深入講解函數(shù)的使用

    各位小伙伴們,今天YU同學(xué)給大家?guī)?lái)的是與函數(shù)相關(guān)的知識(shí),本篇將會(huì)帶著大家初步認(rèn)識(shí)和調(diào)用函數(shù)來(lái)解決一些簡(jiǎn)單的問(wèn)題
    2022-04-04
  • C++中實(shí)現(xiàn)OpenCV圖像分割與分水嶺算法

    C++中實(shí)現(xiàn)OpenCV圖像分割與分水嶺算法

    分水嶺算法是一種常用的圖像區(qū)域分割法,本文主要介紹了OpenCV圖像分割與分水嶺算法,使用C++實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-06-06
  • 分享常用的3個(gè)C++小技巧

    分享常用的3個(gè)C++小技巧

    這篇文章主要分享了常用的3個(gè)C++小技巧,
    2021-12-12
  • C語(yǔ)言實(shí)現(xiàn)自動(dòng)給QQ好友發(fā)窗口抖動(dòng)

    C語(yǔ)言實(shí)現(xiàn)自動(dòng)給QQ好友發(fā)窗口抖動(dòng)

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)自動(dòng)給QQ好友發(fā)窗口抖動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++實(shí)現(xiàn)AVL樹(shù)的基本操作指南

    C++實(shí)現(xiàn)AVL樹(shù)的基本操作指南

    AVL樹(shù)是高度平衡的而二叉樹(shù),它的特點(diǎn)是AVL樹(shù)中任何節(jié)點(diǎn)的兩個(gè)子樹(shù)的高度最大差別為1,下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)AVL樹(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • C++刪除鏈表中間節(jié)點(diǎn)的方法

    C++刪除鏈表中間節(jié)點(diǎn)的方法

    這篇文章主要介紹了C++刪除鏈表中間節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式分析了鏈表刪除中間節(jié)點(diǎn)的具體思路與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05

最新評(píng)論