1

私は次の例を調べていました

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

&そして、上記のテンプレートパラメータータイプが何を意味するのか、なぜそれがないと機能しないの&かを知りたかったのです。

アップデート:

私の質問を言い換えさせてください。私はその参照を理解していますが、それはどの変数を参照していますか? たとえば、ここでは、ポインターの場合、元の (キャストされていない) ポインターを参照すると述べています。非ポインター型の場合に何を参照するのbか、参照として宣言されていないときにどのように参照できるのかを知りたいですか?

4

3 に答える 3

3

const_castテンプレートではなく、型キャストです。intテンプレート引数のように見えるのは、キャストの目的の型です。この場合、 と同じオブジェクトを参照する非 const 参照を取得する必要があることを意味しますa

于 2013-11-21T15:59:15.867 に答える
1

aあなたがそれを書いたようにあなたがconst int&するときです。const_cast

ポインターおよび参照型の cv 修飾子はconst_cast、値ではなく でのみ変更できます。これは、右辺値の constness の指定は、これが参照型またはポインター型であり、したがって変更できる場合にのみ意味があるためです。

したがって、変数の(非定数)値が必要な場合はa、単に次のように記述します

b = a;

いずれにせよ const-ness は無視されるためです。bからコピー構築されaます。

于 2013-11-21T16:00:48.783 に答える