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

C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解

 更新時(shí)間:2017年09月30日 14:24:29   投稿:lqh  
這篇文章主要介紹了C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解

本篇文章我們一共講解一下幾個(gè)知識(shí)點(diǎn):

類的拷貝構(gòu)造函數(shù)。

類的拷貝賦值運(yùn)算符。

類的析構(gòu)。

好了one by one

如果我們沒有定義類的拷貝構(gòu)造函數(shù)的話,那么編譯器會(huì)為我們合成默認(rèn)拷貝構(gòu)造函數(shù)----合成拷貝構(gòu)造函數(shù)。

和成拷貝構(gòu)造函數(shù)的操作是將其參數(shù)的各個(gè)成員拷貝到正在創(chuàng)建的對(duì)象中去,每個(gè)成員的類型決定了他是如何被拷貝的:對(duì)類類型的成員,會(huì)使用其拷貝構(gòu)造函數(shù),內(nèi)置類型的成員則是直接拷貝,雖然我們不能直接拷貝一個(gè)數(shù)組,但是合成拷貝構(gòu)造函數(shù)會(huì)逐個(gè)的拷貝一個(gè)數(shù)組類型的成員。

下面我們用代碼演示一下合成拷貝構(gòu)造函數(shù)的功能:

#include <iostream> 
using namespace std; 
/* 
  代碼模仿合成拷貝構(gòu)造函數(shù)的功能 
*/ 
class Sales_data 
{ 
public: 
  Sales_data(); 
  //我們只是為了讀者更好的理解還原了一下合成拷貝構(gòu)造函數(shù)所實(shí)現(xiàn)的功能,實(shí)際上我們是看不見的 
  Sales_data(const Sales_data& s); 
  ~Sales_data(); 
 
private: 
  string bookNo; 
  int units_sold = 0; 
  double revenue = 0.0; 
 
}; 
 
Sales_data::Sales_data() 
{ 
} 
 
Sales_data::Sales_data(const Sales_data& s) : 
bookNo(s.bookNo), units_sold(s.units_sold), revenue(s.revenue){ 
   
} 
 
Sales_data::~Sales_data() 
{ 
} 

好了,我們定義拷貝構(gòu)造函數(shù)也是如此定義的,我解釋一下為什么參數(shù)表里面是一個(gè)靜態(tài)的引用:

1)我們不想改變?cè)撘玫闹?,只是用來進(jìn)行拷貝。

2)我們必須聲明為引用,如果寫成類的話,則又會(huì)調(diào)用該類的拷貝構(gòu)造函數(shù),在那個(gè)拷貝構(gòu)造函數(shù)中又會(huì)調(diào)用拷貝構(gòu)造函數(shù),這樣陷入死循環(huán)。

我們?cè)趤韺W(xué)習(xí)一下拷貝賦值運(yùn)算符:

和拷貝構(gòu)造函數(shù)一樣,如果我們不定義拷貝賦值運(yùn)算符的話,編譯器將會(huì)為我們合成一個(gè),我們下面用代碼來模仿一下吧:

#include <iostream> 
using namespace std; 
/* 
代碼模仿拷貝賦值運(yùn)算符 
*/ 
class Sales_data 
{ 
public: 
  Sales_data(); 
  //拷貝賦值運(yùn)算符的默認(rèn)合成 
  Sales_data& operator = (const Sales_data & s); 
  ~Sales_data(); 
 
private: 
  string bookNo; 
  int units_sold = 0; 
  double revenue = 0.0; 
 
}; 
 
Sales_data::Sales_data() 
{ 
} 
 
Sales_data& Sales_data::operator = (const Sales_data & s) { //為什么我們的返回值一定是引用類型呢?這是因?yàn)槲覀兛梢赃M(jìn)行鏈?zhǔn)骄幊潭龅模簊1 = s2 =s3; 
  bookNo = s.bookNo; 
  units_sold = s.units_sold; 
  revenue = s.revenue; 
  return *this; 
} 
 
Sales_data::~Sales_data() 
{ 
} 

好了,我們定義拷貝賦值運(yùn)算符也是如此,我們就不一一贅述了。

我來在來談一談;類的構(gòu)造函數(shù)初始化和類的析構(gòu)函數(shù)銷毀過程的一些細(xì)節(jié)性問題。

1比如我們定義了一個(gè)構(gòu)造函數(shù),實(shí)際上在參數(shù)化賦值列表處及大括號(hào)之前,才是我們真正進(jìn)行初始化的地方,在大括號(hào)之中做的操作只是進(jìn)行了拷貝賦值操作。

這一點(diǎn)我們要清楚的認(rèn)識(shí)到,要不然在對(duì)const對(duì)象進(jìn)行初始化是就有問題了,因?yàn)閏onst對(duì)象只能初始化。

2比如我們定義了一個(gè)析構(gòu)函數(shù),注意了,我們?cè)冢ǎ?{之間的部分才是做了真正的類成員變量的析構(gòu)操作,{}里面使我們進(jìn)行的自定義操作,不一定是什么析構(gòu),應(yīng)為析構(gòu)基本已經(jīng)完成了。

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C++實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)為其它進(jìn)制數(shù)

    C++實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)為其它進(jìn)制數(shù)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)為其它進(jìn)制數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語言數(shù)組實(shí)現(xiàn)掃雷游戲

    C語言數(shù)組實(shí)現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C語言數(shù)組實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 嵌入式C語言查表法在項(xiàng)目中的應(yīng)用

    嵌入式C語言查表法在項(xiàng)目中的應(yīng)用

    今天小編就為大家分享一篇關(guān)于嵌入式C語言查表法在項(xiàng)目中的應(yīng)用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++中STL的常用算法總結(jié)

    C++中STL的常用算法總結(jié)

    這篇文章主要介紹了C++?STL中一些常見算法的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • C++用Dijkstra(迪杰斯特拉)算法求最短路徑

    C++用Dijkstra(迪杰斯特拉)算法求最短路徑

    Dijkstra(迪杰斯特拉)算法是典型的最短路徑路由算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止。下面這篇文章就給大家介紹關(guān)于C++用Dijkstra算法(迪杰斯特拉算法)求最短路徑的方法,下面來一起看看吧。
    2016-12-12
  • C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法

    C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法

    MAC地址(Media Access Control address),又稱為物理地址或硬件地址,是網(wǎng)絡(luò)適配器(網(wǎng)卡)在制造時(shí)被分配的全球唯一的48位地址,通過獲取MAC地址可以判斷當(dāng)前主機(jī)的唯一性可以與IP地址綁定并實(shí)現(xiàn)網(wǎng)絡(luò)準(zhǔn)入控制,本文給大家介紹了使用C/C++獲取主機(jī)網(wǎng)卡MAC地址的三方法
    2023-11-11
  • C++類型轉(zhuǎn)換的深入總結(jié)

    C++類型轉(zhuǎn)換的深入總結(jié)

    這篇文章主要給大家介紹了關(guān)于C++類型轉(zhuǎn)換的深入總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)

    C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言指針必備基礎(chǔ)全面覆蓋

    C語言指針必備基礎(chǔ)全面覆蓋

    數(shù)據(jù)對(duì)象是指存儲(chǔ)在內(nèi)存中的一個(gè)指定數(shù)據(jù)類型的數(shù)值或字符串,它們都有一個(gè)自己的地址,指針是保存這個(gè)地址的變量,本篇文章帶你掌握C語言指針的用法
    2021-10-10
  • C語言超詳細(xì)講解指向函數(shù)的指針

    C語言超詳細(xì)講解指向函數(shù)的指針

    C語言程序在編譯后,每個(gè)函數(shù)都有一個(gè)首地址(也就是函數(shù)第一條指令的地址),這個(gè)地址稱為函數(shù)的指針??梢远x指向函數(shù)的指針變量,使用指針變量間接調(diào)用函數(shù)
    2022-07-07

最新評(píng)論

浏阳市| 长丰县| 南部县| 沁水县| 哈巴河县| 遵义市| 彭山县| 龙陵县| 阳新县| 左贡县| 西平县| 镇远县| 会同县| 正蓝旗| 武威市| 桃园县| 漠河县| 韩城市| 成武县| 平远县| 济阳县| 屏边| 东辽县| 浙江省| 庆元县| 板桥市| 齐河县| 穆棱市| 连平县| 云林县| 偃师市| 镇巴县| 太谷县| 开封县| 新兴县| 元朗区| 吴堡县| 红桥区| 富裕县| 津市市| 津南区|