为什么这段代码不像我想的那样工作
Why is this piece of code not working as I think?
这里有一个片段:
Test & returnref(){
Test *obj = new Test();
cout << &obj << endl;
return *obj;
}
int main(){
Test &object = returnref();
cout << &object;
cin.get();
return 0;
}
此代码生成以下内容:
0016FBC8
004D4B98
为什么不是
0016FBC8
0016FBC8
?
我认为,如果我返回对动态创建的对象(在堆上)的引用,它应该是完全相同的对象,因此地址应该相等。
为什么我错了?
在这里:
cout << &obj << endl;
您正在打印指针的地址。您真正想要的是指向对象的地址,即&*obj
或简单地obj
。
相关文章:
- 有人可以向我解释一下这段代码是如何工作的吗?(程序在预期数值且用户输入其他输入时再次要求用户输入)
- 为什么这段代码不能正常工作???我的意思是,为什么当我运行它时它没有显示任何内容?
- 为什么这段代码不像我想的那样工作
- 你能向我解释这段代码吗,为什么工作是 c++ 质数
- memset在这段代码中是如何工作的
- 为什么这段代码会导致程序停止工作
- 为什么这段代码不能工作
- 这段代码是如何工作的
- 为什么这段代码不能像我需要的那样快地工作?
- c++ 11 atomic:为什么这段代码可以工作?
- 为什么这段代码的打印顺序不像我预期的那样工作?
- 为什么这段代码可以工作
- 这段c++代码是如何工作的
- 这段代码是一个工作的临界区包装器类吗?
- 为什么这段代码工作正常?(vector.clear(), vector<vector<int> >)
- 为什么这段代码以相反的方式工作?
- 为什么这段代码可以工作,正在发生的事情的名称是什么
- 这段代码如何工作而没有任何错误
- 同一段c++代码在g++ 4.6编译器中可以工作,但在5.1编译器中会崩溃
- c++算法中排序函数是如何工作的,以及如何改进这段代码