int iVar;
const long& LongRef3 = iVar;
Ссылка LongRef3
не относится к iVar
, но является временным значением типа long
, инициализированным из значения iVar
. Код несколько похож на этот:
int iVar;
const long __injected_iVar__ = iVar;
const long& LongRef3 = __injected_iVar__;
Вы можете попытаться увидеть, что произойдет, если вы сделаете &iVar
против &LongRef3
.
Зачем мне это делать? Когда это будет полезно, если его объявить const int &?
В таких простых случаях это может не быть полезным. Однако если аргумент функции принимает что-то по константной ссылке, то вы можете использовать в качестве такого аргумента совместимые типы и даже литералы.
И есть ли ограничения для каких типов я могу сделать это?
Только для совместимых типов; но он также применим к определенным пользователем структурам и классам, если они обеспечивают преобразования между ними.