和&存在的是什么在const_cast模板参数中表示

时间:2013-11-21 15:56:33

标签: c++ casting const-cast

我正在讨论以下示例

const int a = 12;
int b;
b = const_cast<int&>(a);  

我想知道上面模板参数类型中的&表示什么,以及没有&它无法正常工作的原因?

更新

让我重新解释一下我的问题。我理解它的参考,但它指的是什么变量?例如here它指出它指向引用原始(uncast)指针的指针。我想知道它引用了非指针类型的内容,以及b如何在未被声明为引用时引用它?

3 个答案:

答案 0 :(得分:3)

const_cast不是模板,而是类型转换。似乎是模板参数的是转换的目标类型,在这种情况下,它意味着您希望获得int的非const引用,该引用引用与a相同的对象。

答案 1 :(得分:1)

当您编写a时,

const int&const_cast

您只能使用const_cast修改指针和引用类型的cv限定符,而不能修改值。这是因为为rvalues指定constness只有在引用或指针类型时才有意义,因此可以修改。

因此,如果您只想要变量a的(非常量)值,只需编写

b = a;

因为无论如何都忽略了常量。然后从b复制构造a

答案 2 :(得分:0)

基本上a是const,b不是const

所以const_cast基本上说b存储在a但删除了const。