024*_*446 -2 c++ reference visual-studio-2010
这是一个片段:
Test & returnref(){
Test *obj = new Test();
cout << &obj << endl;
return *obj;
}
int main(){
Test &object = returnref();
cout << &object;
cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并且此代码生成以下内容:
0016FBC8
004D4B98
Run Code Online (Sandbox Code Playgroud)
为什么不呢
0016FBC8
0016FBC8
Run Code Online (Sandbox Code Playgroud)
?
我认为,如果我返回对动态创建的对象(在堆上)的引用,它应该是完全相同的对象,因此地址应该相等.
为什么我错了?
小智 7
这里:
cout << &obj << endl;
Run Code Online (Sandbox Code Playgroud)
您正在打印指针的地址.你真正想要的是尖头物体的地址,这是&*obj或简单的obj.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |