以下代碼如何在C++中工作?它合乎邏輯嗎?常量引用的文字初始化
const int &ref = 9;
const int &another_ref = ref + 6;
爲什麼C++允許const引用的文字初始化,當非const引用不允許時呢?例如爲:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
這可以通過,一個非const引用可被用來改變它指的是變量的值的事實來解釋。因此,C++不允許對const變量進行非const引用。
這可能是一個可能的解釋? C++不允許:
int &ref = 7;
因爲那是不符合邏輯,但:
const int &ref = 7;
幾乎等同於:
const int val = 7;
所以文字初始化允許const的變量。
P.S .:我目前正在學習Lippman的C++入門書。
+1。但我認爲你的第二個例子將被轉換爲{__internal_unique_name(「foobar」); f(__ internal_unique_name); } – mmmmmmmm 2010-01-18 18:48:55
@rstevens:無關緊要:轉換不能是明確的,在這種情況下它們是相同的。 – 2010-01-18 19:00:33