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

C++中淺拷貝與深拷貝的詳解及其作用介紹

 更新時間:2021年09月07日 11:08:05   作者:我是小白呀  
這篇文章主要介紹了C++中淺拷貝與深拷貝的詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

概述

淺拷貝 (shallow copy) 只是對指針的拷貝, 拷貝夠兩個指針指向同一個內(nèi)存空間. 深拷貝 (deep copy) 不但對指針進行拷貝, 而且對指針指向的內(nèi)容進行拷貝. 經(jīng)過深拷貝后的指針是指向兩個不同地址的指針.

在這里插入圖片描述

對象的賦值

同類對象之間可以相互賦值. 對象賦值的一般形式:

對象名1 = 對象名2;

舉個栗子:

int main() {

    Time t1(6,6,6);
    Time t2 = t1; // 對象賦值
    
    return 0;
}

實現(xiàn)原理: 賦值運算符的重載.

對象的復(fù)制

對象的復(fù)制即用已有的對象克隆出一個新對象. 對象復(fù)制的一般格式:

類名 對象2(對象1);

舉個栗子:

int main() {

    Time t1(8, 8, 8);
    Time t2(t1);  // 對象的復(fù)制
    
    return 0;
}
int main() {

    Time t1(8, 8, 8);
    Time t2 = t1;  // 對象的復(fù)制
    
    return 0;
}

原理: 編譯系統(tǒng)默認提供的默認復(fù)制構(gòu)造函數(shù). 如:

Time::Time(const Time& t){
    hour = t.hour;
    minute = t.minute;
    second = t.second;
}

對象復(fù)制的用途

建立一個新對象

我們可以利用復(fù)制構(gòu)造函數(shù)進行初始化而建立一個新對象.

Time t2(t1);

函數(shù)的參數(shù)為類對象

通過調(diào)用復(fù)制的構(gòu)造函數(shù)來建立一個實參的拷貝, 在調(diào)用函數(shù)時我們可以將實參對象完整的傳遞給形參. 例如:

void fun(Time time);

using namespace std;

int main() {

    Time t1(8, 8, 8);
    fun(t1);

    return 0;
}

void fun(Time time) {
    cout << "function" << endl;
}

函數(shù)的返回值為類對象

當(dāng)函數(shù)調(diào)用完畢, 我們需要通過調(diào)用復(fù)制的構(gòu)造函數(shù)將函數(shù)中的對象復(fù)制一個臨時的對象并返回. 例如:

Time fun();

using namespace std;

int main() {

    Time t2;
    t2 = fun();

    return 0;
}

Time fun() {
    Time t1(8, 8,8);
    return t1;
}

淺拷貝

淺拷貝 (Shallow Copy) 只復(fù)制某個對象的指針, 而不復(fù)制對象本身, 新舊對象還是共享同一塊內(nèi)存.

在這里插入圖片描述

Test 類:

#ifndef PROJECT2_TEST_H
#define PROJECT2_TEST_H

class Test {
public:
    int x;
    Test(int n);
    void show();
};

#endif //PROJECT2_TEST_H

Test.cpp:

#include <iostream>
#include "Test.h"
using namespace std;

Test::Test(int n) : x(n){}

void Test::show() {
    cout << x << endl;
}

main:

#include "Test.h"
#include <iostream>

using namespace std;

int main() {

    Test *pt1 = new Test(100);
    Test *pt2 = pt1;

    pt1 -> x = 5;

    pt1 -> show();
    pt2 -> show();
	
	delete pt1;
	delete pt2;
	
    return 0;
}

輸出結(jié)果:

5
5

深拷貝

深拷貝 (Deep Copy) 在拷貝的過程中會另外創(chuàng)造一個一模一樣的對象. 新對象跟原對象不共享內(nèi)存, 修改新對象不會改到原對象. 例如:

#include "Test.h"
#include <iostream>

using namespace std;


int main() {

    Test a(100);
    Test b = a;

    a.x = 5;
    a.show();
    b.show();

    return 0;
}

輸出結(jié)果:

5
100

到此這篇關(guān)于C++中淺拷貝與深拷貝的詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++淺拷貝深拷貝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)之歸并排序的實例詳解

    數(shù)據(jù)結(jié)構(gòu)之歸并排序的實例詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之歸并排序的實例詳解的相關(guān)資料,這里對歸并排序進行詳細介紹,需要的朋友可以參考下
    2017-08-08
  • 簡單解讀C++中的虛函數(shù)

    簡單解讀C++中的虛函數(shù)

    這篇文章主要介紹了C++中的虛函數(shù),在C++中,虛函數(shù)聯(lián)系到多態(tài)、多態(tài)聯(lián)系到繼承,因而虛函數(shù)是C++中的一大重要特性,需要的朋友可以參考下
    2016-04-04
  • C語言實現(xiàn)計算圓周長以及面積

    C語言實現(xiàn)計算圓周長以及面積

    這篇文章主要介紹了C語言實現(xiàn)計算圓周長以及面積方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言實現(xiàn)掃雷游戲詳解(附源碼)

    C語言實現(xiàn)掃雷游戲詳解(附源碼)

    大家好,本篇文章主要講的是C語言實現(xiàn)掃雷游戲詳解(附源碼),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Qt5.9實現(xiàn)簡單的多線程實例(類QThread)

    Qt5.9實現(xiàn)簡單的多線程實例(類QThread)

    Qt開啟多線程,主要用到類QThread。用一個類繼承QThread,然后重新改寫虛函數(shù)run()。具有一定的參考價值,感興趣的可以了解一下
    2021-09-09
  • C語言自增(++)和自減(--)實例詳解

    C語言自增(++)和自減(--)實例詳解

    本篇文章主要介紹了C語言的自增和自減的基本知識,并附有代碼示例,以便大家理解,有需要的朋友可以看下
    2016-07-07
  • 基于稀疏圖上的Johnson算法的詳解

    基于稀疏圖上的Johnson算法的詳解

    本篇文章介紹了,稀疏圖上的Johnson算法的詳解。需要的朋友參考下
    2013-05-05
  • C++中異常機制的實現(xiàn)機制詳解

    C++中異常機制的實現(xiàn)機制詳解

    這篇文章主要給大家介紹了關(guān)于C++中異常機制的實現(xiàn)機制的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • 4組C語言中順序讀寫文件的函數(shù)分享

    4組C語言中順序讀寫文件的函數(shù)分享

    這篇文章主要為大家詳細介紹了4組C語言中實現(xiàn)順序讀寫文件的函數(shù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • C 語言基礎(chǔ)之C 語言三大語句注意事項

    C 語言基礎(chǔ)之C 語言三大語句注意事項

    今天講解的內(nèi)容,則是自己對于這三種語句一些細節(jié)的簡單介紹,分支語句:if,switch、循環(huán)語句:while,for,do while、goto語句,感興趣的小伙伴可以參考下面具體的文章內(nèi)容
    2021-09-09

最新評論

青州市| 上饶县| 营口市| 洛扎县| 九寨沟县| 云林县| 云梦县| 金湖县| 湟中县| 龙门县| 黑龙江省| 滦南县| 尉氏县| 宁波市| 扬中市| 泾川县| 文昌市| 夏津县| 浑源县| 凤阳县| 浮梁县| 九龙坡区| 托克逊县| 钟山县| 卫辉市| 沁阳市| 桐城市| 泗洪县| 通辽市| 阜城县| 青田县| 酉阳| 屏东市| 岗巴县| 湖口县| 家居| 边坝县| 白朗县| 集安市| 共和县| 石楼县|