что означает наличие & amp; значит в параметре шаблона const_cast

Я шел над следующим примером

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

и я хотел знать, что & в шаблоне тип параметра означает выше и почему он не будет работать без & ?

Обновить:

Позвольте мне перефразировать мой вопрос. Я понимаю, что это ссылка, но на какую переменную она ссылается? Например Вот он заявляет, что в случае указателей он ссылается на оригинальный (uncast) указатель. Я хочу знать, что он ссылается в случае не указателя типов и как можно b б ссылка, когда она не была объявлена ​​как ссылка?

1

Решение

const_cast это не шаблон, а приведение типа. То, что кажется аргументом шаблона, является целевым типом для приведения, и в этом случае это означает, что вы хотите получить неконстантную ссылку на int что относится к тем же объектам, что и a,

3

Другие решения

a является const int& когда вы делаете const_cast как ты это написал.

Вы можете изменять cv-квалификаторы указателей и ссылочных типов только с const_cast, а не ценностей. Это связано с тем, что указание константы для значений r имеет смысл только в том случае, если это ссылка или тип указателя, и, следовательно, ее можно изменить.

Так что если вы просто хотите (не константное) значение переменной a, просто напиши

b = a;

поскольку постоянство все равно игнорируется. b затем копируется из a,

1

В основном a является const, b не является const

поэтому const_cast в основном говорит, что b хранится в a, но удаляет const.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector