不,不行.局部变量在堆栈上声明,并且堆栈在方法调用之间不断变化.此外,超出范围的对象也会被破坏.始终返回局部变量的副本.
考虑以下代码:
#include <iostream>
using namespace std;
class MyClass
{
public:
MyClass() { cout << "ctor" << endl; }
~MyClass() { cout << "dtor" << endl; }
MyClass(const MyClass& r) { cout << "copy" << endl; }
};
const MyClass& Test()
{
MyClass m;
return m;
}
int main()
{
cout << "before Test" << endl;
MyClass m = Test();
cout << "after Test" << endl;
}
Run Code Online (Sandbox Code Playgroud)
这将打印出来:
before Test
ctor
dtor
copy
after Test
dtor
Run Code Online (Sandbox Code Playgroud)
您尝试复制的对象已调用其析构函数,可能处于无效状态.
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |