搜尋

首頁  >  問答  >  主體

c++ - 常量左值引用

为什么常量左值引用可以赋右值,右值不是没有内存地址吗?但是引用不是相当于一个别名吗?那么左值的变量的地址是哪里的呢?

#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的地址是如何确定的。请问这该怎么解释?

PHP中文网PHP中文网2774 天前379

全部回覆(3)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 13:51:58

    常數左值參考可以延長一個臨時量(temporary object)的生命週期
    http://en.cppreference.com/w/cpp/language/reference 裡的Rvalue references節有講
    C++ primer 關於引用的章節裡面也有臨時量的概念

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:51:58

    int型佔4個位元組
    所以3c - 38 = 4

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:51:58

    c是在a 和b之後聲明的const常數,系統重新給它在a(b)的位址之後分配了一塊位址
    一個int佔4個bit,所以0x72fe38 + 4 = 0x72fe3c
    16進位中38 + 4 = 3c

    回覆
    0
  • 取消回覆