歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中的引用

C++中的引用

日期:2017/3/1 9:06:58   编辑:Linux編程

一,C++中引用的基礎知識

1.引用的基本概念

  1.所謂的引用其實就是對變量起“別名”。引用和變量對應得是相同的內存,修改引用的值,變量的值也會改變,和指針類似。

  2.引用在定義的時候必須要初始化,初始化後就用引用的對象綁定在一起了。

  3.引用本身不是對象,不能定義引用的引用。

2.引用的意義

  1.引用作為其他變量的別名存在,因此在一些場合可以用來替代指針。

  2.引用相對於指針來說具有更好的可讀性和實用性。

3.引用的定義方式

  數據類型 &引用名稱 = 變量;

# include<iostream>
using namespace std;

int main()
{
    // 定義變量a
    int a = 10;
    // 定義引用b
    int &b = a;

    return 0;
}

二,引用的本質

1.引用的本質剖析

# include<iostream>
using namespace std;

int main()
{
    // 定義變量a
    int a = 10;
    // 定義引用b
    int &b = a;
    // 引用一旦初始化,就不再改變本身所綁定的對象,因此引用很想一個const修飾的常量
    cout << "&a = " << &a << endl;
    cout << "&b = " << &b << endl;
    // 通過打印地址,發現變量和引用的地址相同,因此引用本質是一個指針

    return 0;
}

2.引用的本質分析

  1.引用的初始化之後不允許被修改,因此引用是一個常量。

  2.引用的地址和變量本身的地址一樣。因此引用是一個指針。

  3.引用的本質是一個常量指針,只是C++編譯器幫助我們進行了自動取地址操作和解引用操作。

  4.上述的案例的本質:int &b = a; 相當於 int * const b = &a;

三,引用的重點

1.引用作函數參數

  引用作函數參數可以用來替代指針,在函數內部操作引用,就可以修改函數外部變量的值。

2.引用作函數返回值(此處涉及類的拷貝構造函數)

  引用作函數返回值,如果返回的是棧變量,則實際返回的是該變量的一份拷貝。

3.指針引用

  引用是指針類型的,例如:Teacher teacher = {"王剛",21};Teacher * &t = &teacher;

4.常引用

  使用變量初始化引用,使引用具有只讀屬性,保護了引用所指向的對象,防止被函數內部修改。

  使用字面量初始化引用,例如:const int &a = 10;是可以的,這裡會在編譯期間對字面量常量分配內存空間,在上一節的const中有提過。

Copyright © Linux教程網 All Rights Reserved