const
引用是指向 const 物件的引用:
const int ival = 1024;可以讀取但不能修改 refval ,因此,任何對 refval 的賦值都是不合法的。這個限制有其意義:不能直接對 ival 賦值,因此不能通過使用 refval 來修改 ival。const int &refval = ival; // ok: both reference and object are
const
int &ref2 = ival; // error: non
const
reference to a
const
object
同理,用 ival 初始化 ref2 也是不合法的:ref2 是普通的非 const
引用,因此可以用來修改 ref2 指向的物件的值。通過 ref2 對 ival 賦值會導致修改 const 物件的值。為阻止這樣的修改,需要規定將普通的引用繫結到 const 物件是不合法的。
const 引用可以初始化為不同型別的物件或者初始化為右值(第 2.3.1 節),如字面值常量:
int i = 42;// legal for
const
references only
const int &r = 42;
const int &r2 = r + i;
總結:const引用可以用於連線const和非const物件,非const引用只能連線非const物件。也表明了許可權只能越來越嚴格,不能越來越鬆。
引用 const引用和非const引用
引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...
C Primer 筆記五 引用 const 1
定義 const 物件 常量在定義後就不能被修改,所以定義時必須初始化 在全域性作用域宣告的 const 變數是定義該物件的檔案的區域性變數。此變數只存在於那個檔案中,不能被其他檔案訪問。這種情況解決辦法 通過指定 const 變更為 extern,就可以在整個程式中訪問 const 物件 file...
C Primer 筆記五 引用 const 1
定義 const 物件 常量在定義後就不能被修改,所以定義時必須初始化 在全域性作用域宣告的 const 變數是定義該物件的檔案的區域性變數。此變數只存在於那個檔案中,不能被其他檔案訪問。這種情況解決辦法 通過指定 const 變更為 extern,就可以在整個程式中訪問 const 物件 file...