簡介:
引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。
c++11中新增了「右值引用」,我們這裡所說的引用通常指「左值引用」。
例①
int a = 10;
int &rea = a; //rea指向a,是a的另乙個名字
int &rerea; //錯誤 引用必須被初始化
輸出a 和 rea 都是10。
需要注意定義引用時,程式把引用和它的初始值繫結在一起,而不是將初始值拷貝給引用,一旦初始化完成,引用將和它的初始值物件一直繫結在一起,無法將引用繫結到另乙個物件,因此引用必須初始化。
例②
int b;
int &reb = b;
b = 5;
double &rereb = b; //錯誤 引用的型別需要和與之繫結的物件嚴格匹配,存在兩個例外將在下面指出
輸出b和reb都是5。
因為引用本身不是乙個物件,所以不能定義引用的引用。
例③
void swap(int &x, int &y)
輸出 比如a=5,b=10,當呼叫函式後,a=10,b=5。
可以看出,引用的操作實際上是作用在引用所引的物件上的。
拷貝大的類型別物件或者容器物件比較低效,甚至有的類型別不支援拷貝操作,函式只能通過引用形參訪問型別的物件。
例④
const
int c = 10;
const
int &rec = c; //正確 引用及其對應的物件都是常量
int &rerec = c; //錯誤,試圖讓乙個非常量引用指向乙個常量物件
把引用繫結在const物件上,我們稱之為對常量的引用。
例⑤
myclass a(); //基類
myclassplus b();//派生類
myclass &rea = a;
myclass &reb = b; //基類的引用繫結到派生類上
這是引用的型別與物件型別一致的乙個例外,這裡的含義是:當使用基類的引用(或指標)時,實際上我們並不清楚改引用(或指標)所繫結物件的真實型別,該物件可能是基類的物件,也可能是派生類的物件。這被稱作向上強制轉換。但向下強制轉換是不允許的,因為is-a關係通常不可逆。 sprintf舉例說明
最近需要把圖形的座標轉換為字元來檢驗圖形座標的正確與否,所以較多的用到了sprintf 函式。例如 int sign 100 char s1 10 sprintf s1,d sign pdc textout 0,0,s1 這裡就把sprintf 函式的用法總結一下。int sprintf char ...
python argparse舉例說明
目的 想從命令列通過命令來指定是否執行程式中的某個函式 模組 更新關於另乙個例子 這裡只舉例說明 原因是看了很多博文之後,還是沒有解決筆者上面說的那個問題,即如何從命令列決定是否執行某段函式問題 設定乙個引數,名為foreground,簡寫f 即在終端可以輸入 foreground也可以輸入 f。跟...
舉例說明雜湊表
已知一組關鍵字序列為 25,51,8,22,26,67,11,16,54,41 其雜湊位址空間為 0,12 若hash函式定義為 h key key mod 13,採用線性探測法處理衝突,請畫出它們對應的雜湊表 最佳答案 由除餘法的雜湊函式計算出的上述關鍵字序列的雜湊位址 12,12,8,9,0,2...