指標和引用算是c++小白很頭痛的點之一了,我自己經常就是看了忘,忘了看,為了省去找資料的時間消耗,痛定思痛決定寫一篇總結,如有不到之處歡迎指出。
在本質上兩者意思相近,都是指向另乙個存在,下面我們來說一說區別。
1.初始化,指標*可以不用賦初值而引用&則必須要賦初值
指標
int a = 10;
//賦初值 right!!
int *p = &a;
//不賦初值 right!!
int *p;
p = &a;
引用
int a=10;
//賦初值 right!!
int &p=a;
//不賦初值 false!!
int &p;
p=a;
2.重新賦值,指標*可以重新賦值從而指向乙個新的變數而引用&則不可以重新賦值來指向乙個新的變數
指標
int a = 5;
int b = 6;
int *p;
p = &a;
p = &b; //right
引用
int a = 5;
int b = 6;
int &p = a;
int &p = b; //false
3.巢狀使用,指標*可以進行巢狀使用而引用&則不可以巢狀使用
指標
int a = 10;
int *p = a;
int **q = p; //right
引用
int a = 10;
int &p = a;
int &&q = p; //false
以指標為例,宣告方式共有兩種:
int* a
int *a
這兩種實際作用上沒有區別
區別在於同時宣告多個變數時
例:int *a, b, c 只有a是指標,b和c均為int型別
int* a, b, c 和int, double等普通連續宣告變數存在區別,它和上面的寫法一樣只有a是指標,b和c均為int型別,對於初學者來說容易產生誤導。
vc 在乙個類中呼叫另乙個類的變數
有幾個前提條件 1.被引用的變數所在類必須被完整地定義,而不是只有前向宣告 例如只是一行class a 2.被引用的變數必須是引用處可訪問的。也就是說,以下條件至少滿足其中之一 2.1.訪問變數的語句所在的類被宣告為被訪問的變數所在類的友元類 2.2.訪問變數的語句所在的函式被宣告為被訪問變數所在類...
C 中類A的成員變數是另乙個類物件的情況分析
class a a private b b a a c 中類a的成員變數是另乙個類b物件時,在a呼叫建構函式時,會先呼叫b類的建構函式對b物件進行構造。所以,為類物件的成員變數並不必在呼叫類的建構函式中初始化 a a 在建立a類物件的時候,就會預設呼叫b類的建構函式,在b構造的時候,會直接開啟資料庫...
C 乙個類呼叫另乙個類的成員變數 成員函式
有時候,兩個類之間並沒有繼承的關係,但是其中乙個類需要引用另乙個類中的成員變數或者成員函式。怎樣辦到呢?假設已經新建了兩個類a b。class a class b 現在需要在類a的成員函式中呼叫類b的成員變數b nadd b x,使得a nadd與b nadd相加,那麼只需要在類a的.cpp檔案中包...