返回const int&的类型

use*_*434 -2 c++

const int z1 = 5;
const int & giveMeNumber1(){
    return z1;
}

int z2 = 6;
const int & giveMeNumber2(){
    return z2;
}

int main(){
    int y = giveMeNumber1();
}
Run Code Online (Sandbox Code Playgroud)
  1. 两种函数的返回类型似乎都是const int.我对么?如果是这样,为什么我能分配int y = giveMeNumber1();

  2. 为什么这些函数不返回的实际地址z1z2分别.我写的时候:

    int x = 3; cout << &x << endl;
    
    Run Code Online (Sandbox Code Playgroud)

    x打印变量的地址,因此:

    cout << giveMeNumber1() << endl;
    
    Run Code Online (Sandbox Code Playgroud)

    应该打印地址(const int & return type),但它打印5.

Lig*_*ica 5

哇,误解了.好的,让我们看看我们能做些什么.

两种函数的返回类型似乎都是const int.我对么?

不.两种功能的返回类型是const int&.参考const int.

如果是这样,为什么我能分配int y = giveMeNumber1();

因为你正在复制y?您可以将const对象复制到非const对象中.一个const东西不能被修改,但复制的东西不会修改它.

为什么这些函数不返回的实际地址z1z2分别.

因为他们不应该这样做.他们返回对z1和的引用z2.

cout << giveMeNumber1() << endl;
Run Code Online (Sandbox Code Playgroud)

应该打印地址(const int &返回类型)

完全废话.您使用的是哪本C++书?返回类型const int&(至少你这次正确)表示一个参考.引用不是指针或"地址".我不知道你在哪里cout << giveMeNumber1()可以打印任何地址但是...它不会.

有关详细信息,请重新阅读您的C++书籍 ......这一次,涵盖!