一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

C++中的“引用”

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-09-23 09:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引用就是別名,如下,rnum是num的別人,對(duì)rnum的操作實(shí)際就是對(duì)num的操作。這里的&是引用運(yùn)算符,不是取址運(yùn)算符。

intnum=1; int&rnum=num;

還可以定義一個(gè)對(duì)象的別名,如下,注意不能定義一個(gè)類的別名,因?yàn)樗鼪]有具體的內(nèi)存地址。

HumanMike; Human&rMike=Mike;

還要注意一點(diǎn)是,定義引用時(shí)一定要同時(shí)對(duì)該引用進(jìn)行初始化。

函數(shù)的參數(shù)傳遞有三種方式:

(1)通過值來傳遞函數(shù)參數(shù)

當(dāng)通過值的方式給函數(shù)傳遞參數(shù)時(shí),編譯器會(huì)自動(dòng)在棧中創(chuàng)建該參數(shù)的拷貝,因此,函數(shù)處理的是這些副本,一旦函數(shù)執(zhí)行完畢,副本就被釋放,原來的參數(shù)未被修改。

voidswap(inta,intb);//聲明 swap(a,b);//調(diào)用

(2)通過指針來傳遞函數(shù)參數(shù)

當(dāng)通過指針的方式給函數(shù)傳遞參數(shù)時(shí),實(shí)際上傳遞的是參數(shù)的內(nèi)存地址,而無需在棧中創(chuàng)建參數(shù)的拷貝,因此是對(duì)參數(shù)自身的參數(shù)。

voidswap(int*a,int*b);//聲明 swap(&a,&b);//調(diào)用

(3)通過引用來傳遞函數(shù)參數(shù)

對(duì)比于指針的間接訪問,采用引用的方式可以直接訪問內(nèi)存地址。另外,使用別名的方式傳遞參數(shù)比用指針傳遞更加方便和清晰,并且具有指針的功能。

voidswap(int&ra,int&rb);//聲明 swap(a,b);//調(diào)用

傳遞對(duì)象的方式有四種:

(1)用值來傳遞對(duì)象

假如僅僅是傳遞變量的話,采用指針或引用這種按址傳遞方式的優(yōu)勢(shì)不是很明顯,但假如是傳遞較大的對(duì)象的話,則優(yōu)勢(shì)比較明顯。這是因?yàn)榘粗捣绞较蚝瘮?shù)傳遞一個(gè)對(duì)象時(shí),會(huì)建立該對(duì)象的拷貝,而從函數(shù)返回一個(gè)對(duì)象時(shí)也要建立被返回對(duì)象的拷貝。測(cè)試代碼如下:

#include usingnamespacestd; classA { public: A(); A(A&); ~A(); }; A::A() { cout<

輸出結(jié)果:

執(zhí)行構(gòu)造函數(shù)創(chuàng)建一個(gè)對(duì)象 執(zhí)行復(fù)制構(gòu)造函數(shù)創(chuàng)建該對(duì)象的副本 執(zhí)行復(fù)制構(gòu)造函數(shù)創(chuàng)建該對(duì)象的副本 執(zhí)行析構(gòu)函數(shù)刪除該對(duì)象 執(zhí)行析構(gòu)函數(shù)刪除該對(duì)象 執(zhí)行析構(gòu)函數(shù)刪除該對(duì)象

(2)用指針來傳遞對(duì)象

測(cè)試代碼如下:

#include usingnamespacestd; classA { public: A(); A(A&); ~A(); }; A::A() { cout<

輸出結(jié)果:

執(zhí)行構(gòu)造函數(shù)創(chuàng)建一個(gè)對(duì)象

(3)用const指針來傳遞對(duì)象

采用指針來傳遞對(duì)象,雖然可以避免調(diào)用復(fù)制構(gòu)造函數(shù)和析構(gòu)函數(shù),但由于它得到了該對(duì)象的內(nèi)存地址,可以隨時(shí)修改對(duì)象的數(shù)據(jù),因此它破壞了按值傳遞的保護(hù)機(jī)制。如果用const指針來傳遞對(duì)象,就可以防止任何試圖對(duì)該對(duì)象所進(jìn)行的操作行為,并且保證返回一個(gè)不被修改的對(duì)象。測(cè)試代碼如下:

#include usingnamespacestd; classA { public: A(); A(A&); ~A(); intget()const{returnx;} voidset(inti){x=i;} private: intx; }; A::A() { cout<get()<

輸出結(jié)果:

執(zhí)行構(gòu)造函數(shù)創(chuàng)建一個(gè)對(duì)象 99

(4)用引用來傳遞對(duì)象

由于引用不能重新分配去引用另一個(gè)對(duì)象,它始終是常量。測(cè)試代碼如下:

#include usingnamespacestd; classA { public: A(); A(A&); ~A(); intget()const{returnx;} voidset(inti){x=i;} private: intx; }; A::A() { cout<

輸出結(jié)果:

執(zhí)行構(gòu)造函數(shù)創(chuàng)建一個(gè)對(duì)象 99

引用不但實(shí)現(xiàn)了指針的功能,而且使用起來更加方便,那為什么還要指針?因?yàn)橹羔樋梢詾榭?,但引用不能為空,指針可以被賦值,引用只可以被初始化,不可以被賦為另一個(gè)對(duì)象的別名。如果想使一個(gè)變量記錄不同對(duì)象的地址,就必須使用指針。要明白的一點(diǎn)是不可以直接用引用來指向堆中新建的空間,引用只是個(gè)別名,不可以作為指針來使用。如int &r=new int;是錯(cuò)誤的。

聲明:本文內(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

    文章

    4381

    瀏覽量

    64907
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2119

    瀏覽量

    75333

原文標(biāo)題:【博文連載】C++中的“引用”

文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C++避坑指南

    C++是一門古老的語言,但仍然在不間斷更新,不斷引用新特性。但與此同時(shí) C++又甩不掉巨大的歷史包袱,并且 C++的設(shè)計(jì)初衷和理念造成了
    發(fā)表于 09-15 09:04 ?893次閱讀

    如何在C++包含C代碼?

    :32: 未定義對(duì)“CB_Display_GetValues”的引用你有這個(gè)問題的解決方案或者你知道如何解決嗎?在 C 包含 C++ 代碼如何工作(相反的方式)?非常感謝,節(jié)日快樂,
    發(fā)表于 01-11 06:42

    c引用和指針的區(qū)別

    is derived-declarator-type-list cv-qualifier-seq pointer to T。 The cv-qualifiers apply to the pointer and not to the object pointer to. 摘自《ANSI C++ Standard》
    發(fā)表于 09-27 15:19 ?1次下載
    <b class='flag-5'>c</b><b class='flag-5'>引用</b>和指針的區(qū)別

    Visual C++教程之C++的語言資料概述免費(fèi)下載

    本文檔詳細(xì)介紹的是Visual C++教程之C++的語言資料概述免費(fèi)下載主要內(nèi)容包括了:1 從CC++的程序結(jié)構(gòu) ,2 程序書寫規(guī)范,3 數(shù)據(jù)類型,4 運(yùn)算符和表達(dá)式,5 基本語句
    發(fā)表于 02-15 15:59 ?3次下載
    Visual <b class='flag-5'>C++</b>教程之<b class='flag-5'>C++</b>的語言資料概述免費(fèi)下載

    C++引用的使用場(chǎng)景

    C++引用的使用場(chǎng)景
    的頭像 發(fā)表于 06-29 15:18 ?4384次閱讀
    <b class='flag-5'>C++</b>:<b class='flag-5'>引用</b>的使用場(chǎng)景

    C++的const和引用的討論

    今天給大家分享一下這段時(shí)間學(xué)習(xí)c++的總結(jié)學(xué)習(xí):c++里面的const關(guān)鍵字和引用。
    的頭像 發(fā)表于 12-24 15:35 ?1101次閱讀

    C++基礎(chǔ)語法引用、封裝和多態(tài)

    本期是C++基礎(chǔ)語法分享的第六節(jié),今天給大家來分享一下: (1)引用; (2)宏; (3)成員初始化列表; (4)封裝; (5)繼承; (6)多態(tài); 引用 左值引用 常規(guī)
    的頭像 發(fā)表于 09-12 09:58 ?1548次閱讀

    適合具備 C 語言基礎(chǔ)的 C++ 入門教程(二)

    在上一則教程,通過與 C 語言相比較引出了 C++ 的相關(guān)特性,其中就包括函數(shù)重載,引用,this 指針,以及在脫離 IDE 編寫 C++
    發(fā)表于 01-25 19:13 ?1次下載
    適合具備 <b class='flag-5'>C</b> 語言基礎(chǔ)的 <b class='flag-5'>C++</b> 入門教程(二)

    c++引用詳細(xì)解說1

    C++C語言的繼承,它可進(jìn)行過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。
    的頭像 發(fā)表于 02-15 09:40 ?826次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細(xì)解說1

    c++引用詳細(xì)解說2

    C++C語言的繼承,它可進(jìn)行過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。
    的頭像 發(fā)表于 02-15 09:43 ?720次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細(xì)解說2

    c++引用詳細(xì)解說3

    C++C語言的繼承,它可進(jìn)行過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。
    的頭像 發(fā)表于 02-15 09:43 ?780次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細(xì)解說3

    c++引用詳細(xì)解說4

    C++C語言的繼承,它可進(jìn)行過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。
    的頭像 發(fā)表于 02-15 09:43 ?769次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細(xì)解說4

    C++引用和指針

    之前的文章我們已經(jīng)介紹了C++的基本類型如int,bool和double等,除了基本類型C++還有一些更復(fù)雜的數(shù)據(jù)類型復(fù)合類型,所謂的復(fù)合類型就是通過其他類型定義的類型,本篇文章我們將會(huì)著重介紹
    的頭像 發(fā)表于 03-17 14:00 ?887次閱讀

    C++的const關(guān)鍵字介紹

    前一篇文章我們主要介紹了C++的復(fù)合類型引用和指針,這篇文章我們將會(huì)主要介紹C++const關(guān)鍵字。有時(shí)候我們想定義一個(gè)值不能被改變的變
    的頭像 發(fā)表于 03-17 14:01 ?972次閱讀

    C++ std::tie函數(shù)的作用和用法

    C++std::tie函數(shù)的作用就是從元素引用中生成一個(gè)tuple元組,其在頭文件定義
    的頭像 發(fā)表于 07-18 17:28 ?1161次閱讀