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

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

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

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

本篇文章我們一共講解一下幾個知識點:

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

類的拷貝賦值運算符。

類的析構(gòu)。

好了one by one

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

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

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

#include <iostream> 
using namespace std; 
/* 
  代碼模仿合成拷貝構(gòu)造函數(shù)的功能 
*/ 
class Sales_data 
{ 
public: 
  Sales_data(); 
  //我們只是為了讀者更好的理解還原了一下合成拷貝構(gòu)造函數(shù)所實現(xiàn)的功能,實際上我們是看不見的 
  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ù)表里面是一個靜態(tài)的引用:

1)我們不想改變該引用的值,只是用來進行拷貝。

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

我們在來學習一下拷貝賦值運算符:

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

#include <iostream> 
using namespace std; 
/* 
代碼模仿拷貝賦值運算符 
*/ 
class Sales_data 
{ 
public: 
  Sales_data(); 
  //拷貝賦值運算符的默認合成 
  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) { //為什么我們的返回值一定是引用類型呢?這是因為我們可以進行鏈式編程而做的:s1 = s2 =s3; 
  bookNo = s.bookNo; 
  units_sold = s.units_sold; 
  revenue = s.revenue; 
  return *this; 
} 
 
Sales_data::~Sales_data() 
{ 
} 

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

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

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

這一點我們要清楚的認識到,要不然在對const對象進行初始化是就有問題了,因為const對象只能初始化。

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

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

相關(guān)文章

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

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

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

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

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

    嵌入式C語言查表法在項目中的應用

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

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

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

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

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

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

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

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

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

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

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

    C語言指針必備基礎全面覆蓋

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

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

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

最新評論

朔州市| 禹州市| 北海市| 台东市| 迭部县| 肇庆市| 阳原县| 惠来县| 长乐市| 无锡市| 阳江市| 斗六市| 调兵山市| 昌图县| 衡南县| 资中县| 岳普湖县| 娄烦县| 富锦市| 萨迦县| 哈尔滨市| 滨州市| 洛阳市| 县级市| 丹棱县| 区。| 中超| 太仓市| 隆尧县| 香河县| 房产| 綦江县| 界首市| 泽库县| 河源市| 梁山县| 灵寿县| 定边县| 溧阳市| 武宣县| 衡水市|