我會在下面的例子中什麼的和存在意味着的const_cast模板參數
const int a = 12;
int b;
b = const_cast<int&>(a);
,我想知道上面是什麼&
模板參數類型表示,爲什麼它不會不&
工作?
更新:
讓我改一下我的問題。我瞭解它的一個參考,但它指的是什麼變量?例如here它說明指針指向它引用原始(uncast)指針。我想知道它是什麼引用了非指針類型,並且它在沒有聲明爲引用時如何可以引用它?
我會在下面的例子中什麼的和存在意味着的const_cast模板參數
const int a = 12;
int b;
b = const_cast<int&>(a);
,我想知道上面是什麼&
模板參數類型表示,爲什麼它不會不&
工作?
更新:
讓我改一下我的問題。我瞭解它的一個參考,但它指的是什麼變量?例如here它說明指針指向它引用原始(uncast)指針。我想知道它是什麼引用了非指針類型,並且它在沒有聲明爲引用時如何可以引用它?
const_cast
不是一個模板,而是一個類型轉換。似乎是模板參數的是演員的目標類型,在這種情況下,這意味着您想要獲得對int
的非常量引用,該引用指向與a
相同的對象。
a
是const int&
當您按照您的要求編寫const_cast
時。
只能使用const_cast
修改指針和引用類型的cv限定符,而不是值。這是因爲爲rval指定常量只有在引用或指針類型是有意義的,因此才能修改。
所以,如果你只是想變a
的(非const)值,只需編寫
b = a;
爲常量性被忽略反正。然後從a
複製構建b
。
基本上是一個常量是,B不是常量
這樣的const_cast基本上說b爲存儲在但是移除常量。
如果你不認識一個引用,你應該退後一步,閱讀一個好的初學者C++好的/教程。 – 2013-11-21 16:18:07
其意義在於...等待它...... **參考!** – 2013-11-21 16:24:01
讓我重新說明我的問題。我知道它是一個參考,但它指的是什麼變量?例如,在msdn.microsoft.com/en-us/library/bz6at95h%28v=vs.110%29.aspx中,它指出它指向它引用原始(uncast)指針的指針。我想知道它指的是什麼非指針類型 – MistyD