一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C 類(深拷貝和淺拷貝)

 心本心123 2021-12-08

文章概述

1.淺拷貝和深拷貝
上一篇文章中,我們提到必要的時候必須手動的寫拷貝構(gòu)造函數(shù)。那什么是必要的時候,我們這篇文章分析。


淺拷貝和深拷貝

我們首先要知道默認(rèn)拷貝構(gòu)造函數(shù)可以完成對象的數(shù)據(jù)成員簡單的復(fù)制,這也稱為淺拷貝。對象的數(shù)據(jù)資源是由指針指向的堆時,默認(rèn)的拷貝構(gòu)造函數(shù)只是將指針復(fù)制。
a. 我們首先分析下面的代碼為什么會出錯??

class Test
{
private:
    int* p;
public:
    Test(int x)
    {
        this->p=new int(x);
        cout << '對象被創(chuàng)建' << endl;
    }
    ~Test()
    {
        if (p != NULL)
        {
            delete p;
        }
        cout << '對象被釋放' << endl;
    }
    int getX() { return *p; }
};

int main()
{
    Test a(10);
    //會調(diào)用默認(rèn)的拷貝構(gòu)造函數(shù)
    Test b = a;
    return 0;
}

我們畫一個示意圖分析:
這里寫圖片描述
看懂了示意圖,我們知道為什么會出錯了(同一個內(nèi)存被釋放兩次)。我們接下來分析解決方案:

class Test
{
private:
    int* p;
public:
    Test(int x)
    {
        this->p=new int(x);
        cout << '對象被創(chuàng)建' << endl;
    }
    ~Test()
    {
        if (p != NULL)
        {
            delete p;
        }
        cout << '對象被釋放' << endl;
    }
    int getX() { return *p; }
    //深拷貝(拷貝構(gòu)造函數(shù))
    Test(const Test& a)
    {
        this->p = new int(*a.p);
        cout << '對象被創(chuàng)建' << endl;
    }
    //淺拷貝(拷貝構(gòu)造函數(shù))
    //Test(const Test& a)
    //{
    //  this->p = a.p;
    //  cout << '對象被創(chuàng)建' << endl;
    //}
};

int main()
{
    Test a(10);
    //我們手動的寫拷貝構(gòu)造函數(shù),C++編譯器會調(diào)用我們手動寫的
    Test b = a;
    return 0;
}

總結(jié): 淺拷貝會把指針變量的地址復(fù)制; 深拷貝會重新開辟內(nèi)存空間。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产亚洲成av人在线观看| 日本人妻熟女一区二区三区| 日韩夫妻午夜性生活视频| 免费在线播放不卡视频| 中文字幕中文字幕在线十八区| 91免费一区二区三区| 亚洲第一香蕉视频在线| 国产精品久久女同磨豆腐| 日韩中文无线码在线视频| 亚洲午夜精品视频观看| 日本黄色高清视频久久| 久久国产青偷人人妻潘金莲| 日韩欧美亚洲综合在线| 九九热这里只有免费精品| 极品少妇嫩草视频在线观看| 欧美成人精品一区二区久久| 成人午夜视频精品一区| 婷婷伊人综合中文字幕| 国产大屁股喷水在线观看视频| 久久精品少妇内射毛片| 精产国品一二三区麻豆| 国产精品免费视频久久| 亚洲欧美黑人一区二区| 欧美一区二区三区五月婷婷| 中文字幕日韩欧美亚洲午夜| 国产a天堂一区二区专区| 美女被啪的视频在线观看| 欧美一区二区三区五月婷婷| 国内午夜精品视频在线观看| 亚洲做性视频在线播放| 小草少妇视频免费看视频| 国产精品欧美激情在线播放| 久热人妻中文字幕一区二区| 亚洲熟女诱惑一区二区| 免费在线播放一区二区| 少妇在线一区二区三区| 国产在线一区中文字幕| 99一级特黄色性生活片| 午夜福利直播在线视频| 欧美人妻盗摄日韩偷拍| 91欧美日韩一区人妻少妇|