我正在讨论以下示例
const int a = 12;
int b;
b = const_cast<int&>(a);
我想知道上面模板参数类型中的&
表示什么,以及没有&
它无法正常工作的原因?
更新
让我重新解释一下我的问题。我理解它的参考,但它指的是什么变量?例如here它指出它指向引用原始(uncast)指针的指针。我想知道它引用了非指针类型的内容,以及b
如何在未被声明为引用时引用它?
答案 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。