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)
两种函数的返回类型似乎都是const int.我对么?如果是这样,为什么我能分配int y = giveMeNumber1();?
为什么这些函数不返回的实际地址z1和z2分别.我写的时候:
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.
哇,误解了.好的,让我们看看我们能做些什么.
两种函数的返回类型似乎都是
const int.我对么?
不.两种功能的返回类型是const int&.参考const int.
如果是这样,为什么我能分配
int y = giveMeNumber1();?
因为你正在复制y?您可以将const对象复制到非const对象中.一个const东西不能被修改,但复制的东西不会修改它.
为什么这些函数不返回的实际地址
z1和z2分别.
因为他们不应该这样做.他们返回对z1和的引用z2.
Run Code Online (Sandbox Code Playgroud)cout << giveMeNumber1() << endl;应该打印地址(
const int &返回类型)
完全废话.您使用的是哪本C++书?返回类型const int&(至少你这次正确)表示一个参考.引用不是指针或"地址".我不知道你在哪里cout << giveMeNumber1()可以打印任何地址但是...它不会.
有关详细信息,请重新阅读您的C++书籍 ......这一次,涵盖!
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |