以下代码如何在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