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

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ù),希望能幫助讀者在程序開發(fā)中更好的理解類,屬于C/C++基礎(chǔ)

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

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

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

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

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

規(guī)則:

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

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

類名(){}

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

1,沒有返回值,也不寫void;

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

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

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

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

1.析造函數(shù),沒有返回值也不寫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ù)分類為 無參構(gòu)造和 有參構(gòu)造

class person
{
public:
    person()
    {
    cout<<"無參構(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)造的語法

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

void test()
{
    //1.括號(hào)法
    person p1;//默認(rèn)無參構(gòu)造調(diào)用
    person p2(10);//默認(rèn)有參構(gòu)造的調(diào)用
     preson p3(p2);//拷貝構(gòu)造的調(diào)用;
    //若是這樣寫 下面這行代碼會(huì)被認(rèn)為是編譯器的聲明
     person p1();  // void func();
   // 無法完成函數(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)于 寫了 person p4 =person(10);
    person p5=p4;
}

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

1.使用一個(gè)已經(jīng)創(chuàng)建完畢的對(duì)象來初始化一個(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ì)帶來對(duì)堆區(qū)內(nèi)存持續(xù)釋放的問題

如果堆區(qū)開辟了內(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ū)開辟,一定要自己提供拷貝構(gòu)造函數(shù),防止淺拷貝帶來的問題

初始化列表

c++提供了初始化列表語法用來初始化屬性

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++編程中的函數(shù)指針初步解析

    C++編程中的函數(shù)指針初步解析

    這篇文章主要介紹了C++編程中的函數(shù)指針初步解析,函數(shù)指針在C語言和C++學(xué)習(xí)中都是非常重要的知識(shí),需要的朋友可以參考下
    2016-04-04
  • C語言矩陣連乘 (動(dòng)態(tài)規(guī)劃)詳解

    C語言矩陣連乘 (動(dòng)態(tài)規(guī)劃)詳解

    這篇文章主要介紹了C語言矩陣連乘 (動(dòng)態(tài)規(guī)劃)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++實(shí)現(xiàn)查找中位數(shù)的O(N)算法和Kmin算法

    C++實(shí)現(xiàn)查找中位數(shù)的O(N)算法和Kmin算法

    這篇文章主要介紹了C++實(shí)現(xiàn)查找中位數(shù)的O(N)算法和Kmin算法,對(duì)于C++程序算法設(shè)計(jì)有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • C++中virtual繼承的深入理解

    C++中virtual繼承的深入理解

    本篇文章是對(duì)C++中的virtual繼承進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++?自增自減運(yùn)算符的實(shí)現(xiàn)示例

    C++?自增自減運(yùn)算符的實(shí)現(xiàn)示例

    本文主要介紹了C++?自增自減運(yùn)算符的實(shí)現(xiàn)示例,自增和自減運(yùn)算符在C++中主要用于循環(huán)語句中,使循環(huán)變量的值自動(dòng)+1或者-1,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 基于Matlab實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)交通標(biāo)志識(shí)別

    基于Matlab實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)交通標(biāo)志識(shí)別

    道路交通標(biāo)志用以禁止、警告、指示和限制道路使用者有秩序地使用道路,?保障出行安全.若能自動(dòng)識(shí)別道路交通標(biāo)志,?則將極大減少道路交通事故的發(fā)生。本文將介紹基于Matlab實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)交通標(biāo)志識(shí)別,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • Prim(普里姆)算法求最小生成樹的思想及C語言實(shí)例講解

    Prim(普里姆)算法求最小生成樹的思想及C語言實(shí)例講解

    Prim算法能夠在帶權(quán)的圖中搜索出最小生成樹,這也是各大ACM和面試及考研題目中的熱點(diǎn),下面我們就來詳細(xì)看一下Prim(普里姆)算法求最小生成樹的思想及C語言實(shí)例講解
    2016-06-06
  • C語言實(shí)現(xiàn)斗地主的核心算法

    C語言實(shí)現(xiàn)斗地主的核心算法

    本文給大家分享的是使用C語言實(shí)現(xiàn)的斗地主游戲的核心算法,主要實(shí)現(xiàn)了面向?qū)ο笤O(shè)計(jì),洗牌、發(fā)牌、判斷牌型、比較牌的大小、游戲規(guī)則等算法。通過這個(gè)斗地主小項(xiàng)目的練習(xí),提高了我的面向?qū)ο笤O(shè)計(jì)能力,加深了對(duì)算法的理解。最近把這些設(shè)計(jì)和算法分享給大家。
    2015-03-03
  • C++抽象數(shù)據(jù)類型介紹

    C++抽象數(shù)據(jù)類型介紹

    這篇文章主要介紹了C++抽象數(shù)據(jù)類型,我們?cè)趯W(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候,經(jīng)常遇到的一個(gè)概念就是抽象數(shù)據(jù)類型(Abstract Data Type),簡(jiǎn)稱ADT。下面我們就對(duì)ADT作更多介紹,需要的朋友可以參考一下
    2022-01-01
  • C語言中0數(shù)組\柔性數(shù)組的使用詳解

    C語言中0數(shù)組\柔性數(shù)組的使用詳解

    這篇文章主要給大家介紹了關(guān)于C語言中0數(shù)組\柔性數(shù)組使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論

景洪市| 汕尾市| 仲巴县| 遂川县| 怀化市| 读书| 寻乌县| 孝昌县| 肥城市| 霍州市| 泗阳县| 开远市| 塔河县| 武夷山市| 视频| 辽源市| 太仓市| 葫芦岛市| 新兴县| 昌黎县| 廊坊市| 鄂尔多斯市| 博客| 潞西市| 县级市| 鹤壁市| 宿州市| 崇文区| 余庆县| 张家界市| 江都市| 衡水市| 大新县| 沈阳市| 蓬溪县| 宜春市| 崇礼县| 景洪市| 佛教| 临湘市| 台湾省|