gpt4 book ai didi

c++ - 返回引用 - 为什么我的代码可以正常工作?不应该

转载 作者:行者123 更新时间:2023-11-30 01:19:32 25 4
gpt4 key购买 nike

我对 C++ 中的引用有一些疑问。

Test & returnref(){
Test obj(9,9);
cout << "in function: " << &obj << endl;
return obj;
} // *

int main(){

Test & asdf = returnref();
Test asdf2 = returnref();
cout << "in main asdf: " << &asdf;
cout << "in main asdf2: " << &asdf2;

cin.get();
return 0;

}

结果:

in function: 0033F854
in function: 0033F854
in main asdf: 0033F854
in main asdf2: 0033F938

是否正确?在我看来,obj 在第 5 行 (*) 上被删除了——因为它在这个函数范围内还存在。那为什么它起作用了?它只是 Visual Studio 吗?还是我错了?

最佳答案

您正在函数的 stack 上分配一个对象当函数返回时,

使用的对象被销毁。使用 new 动态分配它(当然是删除),然后是

做你想做的事。

关于c++ - 返回引用 - 为什么我的代码可以正常工作?不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com