色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

函數(shù)結(jié)構(gòu)的定義和例程說明

CHANBAEK ? 來(lái)源:明解嵌入式 ? 作者:Sharemaker001 ? 2023-04-19 11:35 ? 次閱讀

一、函數(shù)結(jié)構(gòu)定義

在理解拷貝構(gòu)造函數(shù)前,還是有必要回顧下類的構(gòu)造函數(shù)基本概念。 類的構(gòu)造函數(shù)是一種特殊的成員函數(shù),它在創(chuàng)建類的對(duì)象時(shí)執(zhí)行。 構(gòu)造函數(shù)的函數(shù)名和類名一致,它不會(huì)返回任何類型,同樣返回類型也不是void,一般構(gòu)造函數(shù)用來(lái)初始化類的成員變量。

class Object
{
   public:
      Object();  // 構(gòu)造函數(shù)
   private:
      Object obj;
};
//構(gòu)造函數(shù)結(jié)構(gòu)定義
Object::Object(void)
{
    obj = 0;
    cout << "Object is init" << endl;
}

拷貝構(gòu)造函數(shù),又叫做復(fù)制構(gòu)造函數(shù),從字面上看,是通過復(fù)制對(duì)象的方式創(chuàng)建一個(gè)新對(duì)象。 因此,它通過編譯器調(diào)用實(shí)現(xiàn)使用同一個(gè)類中之前創(chuàng)建的對(duì)象來(lái)完成新創(chuàng)建對(duì)象的初始化。 其函數(shù)結(jié)構(gòu)如下:

Object::Object(const Object& obj)
{
}

拷貝構(gòu)造函數(shù)的形參必須為引用,即參數(shù)前加上“&”。 使用引用是因?yàn)槿绻褂脗髦档姆绞綄?shí)參傳給形參,中間過程需要經(jīng)歷一次對(duì)象拷貝的過程,對(duì)象拷貝又需要調(diào)用拷貝構(gòu)造函數(shù),因此為了防止無(wú)限的構(gòu)造,形成死循環(huán)遞歸,拷貝構(gòu)造函數(shù)的形參必須為對(duì)象的引用。

拷貝構(gòu)造函數(shù)形參可以是const引用,也可以是非const引用。 但是一般使用const,這樣既能以常量對(duì)象(初始化后值不能改變的對(duì)象)作為參數(shù)去初始化別的對(duì)象,也能以非常量對(duì)象作為參數(shù)去初始化別的對(duì)象。

二、例程說明

如果不在類中顯式的聲明一個(gè)拷貝構(gòu)造函數(shù),那么編譯器會(huì)自動(dòng)的為類生成一個(gè)拷貝構(gòu)造函數(shù),自動(dòng)生成的拷貝構(gòu)造函數(shù)功能簡(jiǎn)單,即為新對(duì)象復(fù)制源對(duì)象的所有成員。

#include
using namespace std;
class Object
{
public:
   Object(int a, int b);  //構(gòu)造函數(shù)
   void display();
private:
    int m_a;
    int m_b;
};
Object::Object(int a, int b)
{
    m_a = a;
    m_b = b;
}
void Object::display()
{
    cout<

==

運(yùn)行結(jié)果為:

1,9

可以看出默認(rèn)的拷貝構(gòu)造函數(shù)功能就是將之前創(chuàng)建的對(duì)象成員的值都拷貝給了新對(duì)象成員的值。

一般可以顯式的聲明一個(gè)拷貝構(gòu)造函數(shù),如果編寫了拷貝構(gòu)造函數(shù),那么默認(rèn)的拷貝構(gòu)造函數(shù)就不存在了,可以在自己編寫的拷貝構(gòu)造函數(shù)中增加自定義內(nèi)容。

#include
using namespace std;
class Object
{
public:
   Object(int a, int b);  //構(gòu)造函數(shù)
   Object(const Object& obj); //拷貝構(gòu)造函數(shù)
   void display();
private:
    int m_a;
    int m_b;
};
Object::Object(int a, int b)
{
    m_a = a;
    m_b = b;
    cout<<"copy function init"<

運(yùn)行結(jié)果為:

copy function init
1,9

可以看出自己編寫的拷貝構(gòu)造函數(shù)不僅將之前創(chuàng)建的對(duì)象成員的值都拷貝給了新對(duì)象成員的值,而且輸出自定義的打印內(nèi)容。

三、應(yīng)用場(chǎng)景

一般來(lái)說,拷貝函數(shù)被調(diào)用有這樣幾種基本場(chǎng)景:

(1)、通過使用同一個(gè)類中已有的對(duì)象來(lái)初始化新創(chuàng)建的對(duì)象。

Object obj2(obj1);   //用拷貝構(gòu)造函數(shù)初始化obj2 
Object obj3 = obj1;  //用拷貝構(gòu)造函數(shù)初始化obj3

(2)、復(fù)制對(duì)象把它作為參數(shù)傳遞給函數(shù)。

#include
using namespace std;
class Object 
{
public:
   Object(int a);  //構(gòu)造函數(shù)
   Object(const Object& obj); //拷貝構(gòu)造函數(shù)
public:
    int m_a;
};
Object(int a) 
{ 
    m_a = a; 
};
Object(const Object& obj) 
{
    m_a = obj.m_a;
    cout<<"copy function init"<

運(yùn)行結(jié)果為:

copy function init

可以看出,F(xiàn)un()函數(shù)的形參obj在初始化時(shí)調(diào)用了復(fù)制構(gòu)造函數(shù)。 即作為形參的對(duì)象,是用復(fù)制構(gòu)造函數(shù)初始化的,而調(diào)用復(fù)制構(gòu)造函數(shù)時(shí)的參數(shù),就是調(diào)用Fun()函數(shù)時(shí)所傳遞的實(shí)參obj1。

(3)、復(fù)制對(duì)象并從函數(shù)返回這個(gè)對(duì)象。

#include
using namespace std;
class Object 
{
public:
   Object(int a);  //構(gòu)造函數(shù)
   Object(const Object& obj); //拷貝構(gòu)造函數(shù)
public:
    int m_a;
};
Object(int a) 
{ 
    m_a = a; 
};
Object(const Object& obj) 
{
    m_a = obj.m_a;
    cout<<"copy function init"<

運(yùn)行結(jié)果為:

copy function init
1

可以看出,調(diào)用的Fun()函數(shù),它的返回值是一個(gè)對(duì)象,該對(duì)象就是用復(fù)制構(gòu)造函數(shù)初始化的, 即調(diào)用復(fù)制構(gòu)造函數(shù)時(shí),復(fù)制構(gòu)造函數(shù)時(shí)的實(shí)參,就是Fun()函數(shù)return語(yǔ)句所返回的對(duì)象。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4327

    瀏覽量

    62573
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1624

    瀏覽量

    49108
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28360
  • void
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9866
  • CONST
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    8159
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    隊(duì)列相關(guān)素材(函數(shù)定義以及例程

    隊(duì)列相關(guān)素材(函數(shù)定義以及例程)分享
    發(fā)表于 03-23 20:27

    PICC庫(kù)函數(shù)說明(共43頁(yè)pdf)

    目的進(jìn)行敘述性描述。 例程:給出一個(gè)能說明函數(shù)的應(yīng)用例子。 數(shù)據(jù)類型:列出函數(shù)中使用的一些特殊的數(shù)據(jù)類型(如結(jié)構(gòu)體等)的C語(yǔ)言
    發(fā)表于 07-03 01:52

    基于SYS/BIOS以太網(wǎng)例程中幾個(gè)函數(shù)在哪兒定義

    找不到這幾個(gè)函數(shù)的使用說明,根據(jù)函數(shù)的名字,我想應(yīng)該在EMAC/MDIO CSL layer函數(shù)中,但是根據(jù)sprufp2a.pdf也沒有找到相關(guān)的
    發(fā)表于 08-27 08:35

    例程拷貝中斷函數(shù)沒被定義

    EMIF_AD7606V2例程中的lcd.c程序中是這樣的,但是我將這個(gè)lcd.c程序復(fù)制到另一個(gè)例程中就變成,里面的中斷函數(shù)都變成沒有顏色的,也就是沒被定義,我想問一下,問題出在哪里
    發(fā)表于 11-06 12:31

    EMIF_AD7606例程中一個(gè)函數(shù)怎么找到函數(shù)定義

    EMIF_AD7606例程中一個(gè)函數(shù)找不到函數(shù)定義呢?如何找到啊?
    發(fā)表于 03-24 10:59

    如何定義結(jié)構(gòu)體?

    什么是結(jié)構(gòu)體,如何定義結(jié)構(gòu)體? 溫馨提示: 請(qǐng)從以下鏈接中的帖子學(xué)習(xí)相關(guān)內(nèi)容并進(jìn)行回答,其他地方得到的答案不能作為標(biāo)準(zhǔn)答案,僅能做為補(bǔ)充說明,七天之內(nèi)答案不可見,答題的童鞋有七天
    發(fā)表于 05-08 05:55

    函數(shù)定義是什么

    函數(shù)定義函數(shù)定義就是函數(shù)體的實(shí)現(xiàn)編寫函數(shù)存根,為尚未編寫好的代碼占好位置,可以保持程序在
    發(fā)表于 12-17 07:03

    UCOS擴(kuò)展例程-UCOSIII空閑任務(wù)鉤子函數(shù)的使用

    UCOS擴(kuò)展例程-UCOSIII空閑任務(wù)鉤子函數(shù)的使用
    發(fā)表于 12-14 17:24 ?31次下載

    Arduino程序結(jié)構(gòu)及基本函數(shù)的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Arduino程序結(jié)構(gòu)及基本函數(shù)的詳細(xì)資料說明
    發(fā)表于 06-17 17:44 ?7次下載
    Arduino程序<b class='flag-5'>結(jié)構(gòu)</b>及基本<b class='flag-5'>函數(shù)</b>的詳細(xì)資料<b class='flag-5'>說明</b>

    模數(shù)轉(zhuǎn)換器ADC的應(yīng)用和函數(shù)定義等資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是模數(shù)轉(zhuǎn)換器ADC的應(yīng)用和函數(shù)定義等資料說明
    發(fā)表于 05-28 17:29 ?19次下載
    模數(shù)轉(zhuǎn)換器ADC的應(yīng)用和<b class='flag-5'>函數(shù)</b><b class='flag-5'>定義</b>等資料<b class='flag-5'>說明</b>

    C語(yǔ)言函數(shù)的實(shí)驗(yàn)詳細(xì)資料說明

    實(shí)驗(yàn)?zāi)康暮鸵螅?)掌握C語(yǔ)言函數(shù)定義方法、函數(shù)的聲明及函數(shù)的調(diào)用方法。(2)掌握函數(shù)實(shí)參和形參的對(duì)應(yīng)關(guān)系以及“值傳遞”的方式。(3)掌握
    發(fā)表于 12-06 08:00 ?4次下載
    C語(yǔ)言<b class='flag-5'>函數(shù)</b>的實(shí)驗(yàn)詳細(xì)資料<b class='flag-5'>說明</b>

    STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+函數(shù)+使用說明+示例程序)

    STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+函數(shù)+使用說明+示例程序)
    發(fā)表于 12-08 20:36 ?0次下載
    STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+<b class='flag-5'>函數(shù)</b>+使用<b class='flag-5'>說明</b>+示<b class='flag-5'>例程</b>序)

    C語(yǔ)言里函數(shù)定義、子函數(shù)的使用及變量的作用域

    這篇介紹C語(yǔ)言里函數(shù)定義、子函數(shù)的使用。接著介紹變量的作用域,定義全局變量、靜態(tài)變量、只讀變量、變量初始化等等。
    的頭像 發(fā)表于 04-28 11:23 ?6859次閱讀

    python定義函數(shù)與調(diào)用函數(shù)的順序

    定義函數(shù)與調(diào)用函數(shù)的順序 函數(shù)定義后,本身是不會(huì)自動(dòng)執(zhí)行的,只有在被調(diào)用后,函數(shù)才會(huì)被執(zhí)行,得
    的頭像 發(fā)表于 10-04 17:17 ?1381次閱讀

    python如何定義一個(gè)函數(shù)

    ()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。 二、定義一個(gè)函數(shù) 你可以定義一個(gè)由自己想
    的頭像 發(fā)表于 11-14 11:26 ?710次閱讀
    主站蜘蛛池模板: 国产乱码精品AAAAAAAA| 国产在线AV一区二区香蕉| 国产手机在线精品| 久久中文字幕人妻AV熟女| 日本学生VIDEOVIDEOS更新| 性夜夜春夜夜爽AA片A| 99久久综合| 久草在线福利视频在线播放| 日本少妇无码精品12P| 在线观看视频国产| 国产色情短视频在线网站| 欧美xxxxx九色视频免费观看| 亚洲福利区| 国产成人教育视频在线观看| 嗯啊不要老师| 竹菊精品久久久久久久99蜜桃| 国产一区二区三区影院| 色欲无码国产喷水AV精品| 白银谷在线观看| 女人的选择hd| 2019夜夜| 米奇影视999| 1234成人网| 另类重口bdsm日本tv| 亚洲精品卡2卡3卡4卡5卡区| 国产成人高清在线观看播放| 色琪琪久久热在线| 俄罗斯呦呦| 三叶草未满十八岁| 耻辱の奴隷淑女中文字幕| 欧美一区二区三区激情视频| 97色伦97色伦国产| 年轻的女教师2017韩国在线看| 18禁三级黄| 女教师二十三岁| 99热只有精品| 欧美性狂猛bbbbbbxxxx| 成人在线观看国产| 善良的小峓子2在钱中文版女主角 善良的小峓子2在钱免费中文字 | 网友自拍偷拍| 国产高潮久久精品AV无码|