1

我正在查看以下示例

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

我想知道&模板参数类型在上面的含义以及为什么没有&?

更新:

让我重新表述我的问题。我理解它是一个参考,但它指的是什么变量?例如这里它声明它引用原始(未转换)指针的指针。我想知道它在非指针类型的情况下引用了什么,以及b当它没有被声明为引用时如何引用?

4

3 回答 3

3

const_cast不是模板,而是类型转换。看起来是模板参数的是转换的目标类型,在这种情况下,这意味着您想要获得一个非常量引用,int该引用引用与a.

于 2013-11-21T15:59:15.867 回答
1

aconst int&当你const_cast按照你写的那样做的时候。

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

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

b = a;

因为 const-ness 无论如何都被忽略了。b然后从 复制构造a

于 2013-11-21T16:00:48.783 回答
0

基本上 a 是 const,b 不是 const

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

于 2013-11-21T17:34:54.847 回答