引用不能 rebinding

2021-06-26 17:32:45 字數 1440 閱讀 1089

引用(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 取位址符 和引用宣告符 是不一樣的意義。乙個存放記...