为什么常量左值引用可以赋右值,右值不是没有内存地址吗?但是引用不是相当于一个别名吗?那么左值的变量的地址是哪里的呢?
#include <iostream>
#include <cstring>
#include <string>
#include <typeinfo>
using namespace std;
int main()
{
int a = 2;
int& b = a;
cout << &a << endl;
cout << &b << endl;
const int& c = 2;
cout << &c << endl;
return 0;
}
像上面的这段代码,a与b的地址都是一样的,但是我不清楚c的地址是如何确定的。请问这该怎么解释?
大家讲道理2017-04-17 13:51:58
常數左值參考可以延長一個臨時量(temporary object)的生命週期
http://en.cppreference.com/w/cpp/language/reference 裡的Rvalue references節有講
C++ primer 關於引用的章節裡面也有臨時量的概念
天蓬老师2017-04-17 13:51:58
c是在a 和b之後聲明的const常數,系統重新給它在a(b)的位址之後分配了一塊位址
一個int佔4個bit,所以0x72fe38 + 4 = 0x72fe3c
16進位中38 + 4 = 3c