精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++中的“引用”

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-09-23 09:50 ? 次閱讀

引用就是別名,如下,rnum是num的別人,對rnum的操作實際就是對num的操作。這里的&是引用運算符,不是取址運算符。

intnum=1; int&rnum=num;

還可以定義一個對象的別名,如下,注意不能定義一個類的別名,因為它沒有具體的內存地址。

HumanMike; Human&rMike=Mike;

還要注意一點是,定義引用時一定要同時對該引用進行初始化。

函數的參數傳遞有三種方式:

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

當通過值的方式給函數傳遞參數時,編譯器會自動在棧中創建該參數的拷貝,因此,函數處理的是這些副本,一旦函數執行完畢,副本就被釋放,原來的參數未被修改。

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

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

當通過指針的方式給函數傳遞參數時,實際上傳遞的是參數的內存地址,而無需在棧中創建參數的拷貝,因此是對參數自身的參數。

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

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

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

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

傳遞對象的方式有四種:

(1)用值來傳遞對象

假如僅僅是傳遞變量的話,采用指針或引用這種按址傳遞方式的優勢不是很明顯,但假如是傳遞較大的對象的話,則優勢比較明顯。這是因為按值方式向函數傳遞一個對象時,會建立該對象的拷貝,而從函數返回一個對象時也要建立被返回對象的拷貝。測試代碼如下:

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

輸出結果:

執行構造函數創建一個對象 執行復制構造函數創建該對象的副本 執行復制構造函數創建該對象的副本 執行析構函數刪除該對象 執行析構函數刪除該對象 執行析構函數刪除該對象

(2)用指針來傳遞對象

測試代碼如下:

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

輸出結果:

執行構造函數創建一個對象

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

采用指針來傳遞對象,雖然可以避免調用復制構造函數和析構函數,但由于它得到了該對象的內存地址,可以隨時修改對象的數據,因此它破壞了按值傳遞的保護機制。如果用const指針來傳遞對象,就可以防止任何試圖對該對象所進行的操作行為,并且保證返回一個不被修改的對象。測試代碼如下:

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

輸出結果:

執行構造函數創建一個對象 99

(4)用引用來傳遞對象

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

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

輸出結果:

執行構造函數創建一個對象 99

引用不但實現了指針的功能,而且使用起來更加方便,那為什么還要指針?因為指針可以為空,但引用不能為空,指針可以被賦值,引用只可以被初始化,不可以被賦為另一個對象的別名。如果想使一個變量記錄不同對象的地址,就必須使用指針。要明白的一點是不可以直接用引用來指向堆中新建的空間,引用只是個別名,不可以作為指針來使用。如int &r=new int;是錯誤的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4306

    瀏覽量

    62431
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73497

原文標題:【博文連載】C++中的“引用”

文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C++避坑指南

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

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

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

    Visual C++教程之C++的語言資料概述免費下載

    本文檔詳細介紹的是Visual C++教程之C++的語言資料概述免費下載主要內容包括了:1 從CC++的程序結構 ,2 程序書寫規范,3 數據類型,4 運算符和表達式,5 基本語句
    發表于 02-15 15:59 ?3次下載
    Visual <b class='flag-5'>C++</b>教程之<b class='flag-5'>C++</b>的語言資料概述免費下載

    C++引用的使用場景

    C++引用的使用場景
    的頭像 發表于 06-29 15:18 ?4037次閱讀
    <b class='flag-5'>C++</b>:<b class='flag-5'>引用</b>的使用場景

    C++的const和引用的討論

    今天給大家分享一下這段時間學習c++的總結學習:c++里面的const關鍵字和引用
    的頭像 發表于 12-24 15:35 ?820次閱讀

    EE-128:C++的DSP:從C++調用匯編類成員函數

    EE-128:C++的DSP:從C++調用匯編類成員函數
    發表于 04-16 17:04 ?2次下載
    EE-128:<b class='flag-5'>C++</b><b class='flag-5'>中</b>的DSP:從<b class='flag-5'>C++</b>調用匯編類成員函數

    C++基礎語法引用、封裝和多態

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

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

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

    c++引用詳細解說1

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:40 ?549次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細解說1

    c++引用詳細解說2

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:43 ?481次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細解說2

    c++引用詳細解說3

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:43 ?514次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細解說3

    c++引用詳細解說4

    C++C語言的繼承,它可進行過程化程序設計,又可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
    的頭像 發表于 02-15 09:43 ?491次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>引用</b>詳細解說4

    C++引用和指針

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

    C++的const關鍵字介紹

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

    C++ std::tie函數的作用和用法

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