const引用與非const引用

2021-06-04 15:40:05 字數 1023 閱讀 8472

**  

const引用可讀不可改,與繫結物件是否為const無關,注意區分const引用與對const物件的引用

非const引用可讀可改,只可與非const物件繫結

const int ival = 1024;

const int &refval = ival; // ok: both reference and object areconst

int &ref2 = ival;            // error: nonconst reference to a const object

非const引用只能繫結到與該引用同型別的物件。

const引用則可以繫結到不同但相關的型別的物件或繫結到左值。

const引用可以初始化為不同型別的物件或者初始化為右值,如字面值常量:

int i = 42;

// legal for const references only

const int &r = 42;

const int &r2 = r + i;//同樣的初始化對於非const引用卻是不合法的,而且會導致編譯時錯誤。

double dval = 3.14;

const int &ri = dval;

編譯器會把這些**轉換成如以下形式的編碼:

int temp = dval;          // create temporary int from the double

const int &ri = temp;   // bind ri to that temporary

const int t = 9;

const int& k = t;

cout<<&k《如果是對乙個常量進行引用,則編譯器首先建立乙個臨時變數,然後將該常量的值置入臨時變數中,對該引用的操作就是對該臨時變數的操作。

關鍵字:const引用 非const引用

引用 const引用和非const引用

引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...

const與非const型物件

一 非const物件可以初始化const物件 int i 0 const int ci i 因為它們使用各自的儲存單元。二 非const引用與const引用 1 const引用可以用常量 表示式 const物件或非const物件初始化 int i 0 const int refi i 儘管i與ref...

C 中const引用和非const引用的使用注意

今天學習時突然有疑惑,c 有了指標為何還要設計引用呢?後來看到一篇部落格豁然開朗 為什麼 c 有指標了還要引用?總結一下 更加簡潔好看了 由於引用必須被初始化,並且之後也無法重新繫結其他物件,這樣就更安全了 為了操作符過載,比如部落格中那個過載 的例子 並且,在了解了這些之後,對引用的一些其他特性也...