引用(reference)就是某一變數的乙個別名。對引用的操作與對變數直接操作完全一樣。
引用「陷阱」:
引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。
簡單說就是:
引用可以 modify(被繫結的變數),但不能 rebinding(其他變數)。
#include class copywastesample
copywastesample& operator =(const copywastesample& other)
return *this;
}public:
int manydatas;
};class ap
static class ap* ins()
void neverref(class copywastesample& changeapref)
public:
class copywastesample data;
};int main(int argc, const char * argv)
輸出
sample 1:
&a = 0x7fff630b788c, &b = 0x7fff630b788c, &c = 0x7fff630b787c
a = 2, b = 2, c = 3
sample 2:
init, &changeap = 0x7fff630b7878, &(ap::data) = 0x1034b9070
init, changeap.manydatas = 0, ap::data.manydatas = 0
flag-1, &changeapref = 0x7fff630b7878, &ap::data = 0x1034b9070
flag-2, &changeapref = 0x7fff630b7878, &ap::data = 0x1034b9070
after change, &changeap = 0x7fff630b7878, &(ap::data) = 0x1034b9070
after change, changeap.manydatas = 0, ap::data.manydatas = 0
final, &changeap = 0x7fff630b7878, &(ap::data) = 0x1034b9070
final, changeap.manydatas = 10000, ap::data.manydatas = 0
其實還是changeapref不能rebinding,不能被2次引用。
class copywastesample changeap;
class copywastesample& changeapref = changeap;
changeapref = data;
C 中引用不能重新賦值的理解
教材上說引用是不能重新賦值的,可是下面的程式能正常執行,不會出錯。這裡怎麼出現了引用賦值語句呢 語句 1 是不是教材錯了?原因究竟是什麼呢?請看如下程式 include void main int i 1,j 5 int k i k j 語句 1 cout i j k 首先想想程式執行結果應該是什麼...
C 非常量引用不能指向臨時物件
目錄 舉例分析 解決1 舉例 非常量引用 指向 臨時物件 即 將 臨時物件 傳遞給 非常量引用型別。如以下情況就會出現 實現實數rational類,實數可以使用 號相加,運算的結果要可以使用 cout 以分數形式輸出 實數rational 的值 rational a 4,5 rational b 1...
引用不是變數,引用只是引用
include iostream using namespace std void main double a 2 long b 8 double ra a 引用的宣告,引用只在宣告時帶有引用標示符 以後使用時不能再帶 而且引用必須初始化。cout 取位址符 和引用宣告符 是不一樣的意義。乙個存放記...