4

I knew that reference is just another name of a variable, they do not exist as a separate object in memory but what is happening here

double i = 24.7;
const int &ri = i;  //notice int here
std::cout << i << std::endl; //prints 24.7
i = 44.4;
std::cout << ri << std::endl; // prints 24
std::cout << i << std::endl; //prints 44.4

My question is ri is alias of what ? [value 24 in somewhere memory]

songyuanyao
  • 169,198
  • 16
  • 310
  • 405
Kumar Roshan Mehta
  • 3,078
  • 2
  • 27
  • 50

1 Answers1

3

You can't bind reference to object with different type directly.

For const int &ri = i;, i needs to be converted to int at first, then a temporary int is created and then bound to ri, it has nothing to do with the original object i.

BTW: The lifetime of the temporary is extended to match the lifetime of the reference here.

BTW2: Temporary can only be bound to lvalue-reference to const or rvalue-reference.

songyuanyao
  • 169,198
  • 16
  • 310
  • 405