关于C ++:const_cast模板参数中&的含义是什么

what does the presence of & mean in const_cast template parameter

我正在看下面的例子

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

我想知道模板参数类型中的&在上面表示什么,以及为什么没有&不能起作用?

更新:

让我改一下我的问题。 我了解它的引用,但是它指的是什么变量? 例如,在这里它指出在指针的情况下它引用了原始(未广播)指针。 我想知道在非指针类型的情况下它所引用的内容以及b在未被声明为引用的情况下如何引用?


const_cast不是模板,而是类型转换。 看起来是模板参数的是强制转换的目标类型,在这种情况下,这意味着您要获取对int的非常量引用,该引用与a引用相同的对象。


编写const_cast时,aconst int&

您只能使用const_cast修改指针和引用类型的cv限定词,而不能修改值。 这是因为仅当值是引用或指针类型并且可以进行修改时,才为rvalue指定常量性。

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

1
b = a;

因为无论如何都会忽略常量性。 然后从a复制b


基本上a是const,b不是const

因此const_cast基本上说b存储在a处,但删除了const。