一,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中有提過。