【发布时间】:2012-06-11 10:20:04
【问题描述】:
可能重复:
Can a local variable's memory be accessed outside its scope?
return reference to local variable
这是一个示例程序,用于检查函数内本地类对象的范围。在这里,我创建了一个 A 类对象并为其赋值,并通过 Function() 中的引用返回该对象。我想知道变量的作用域什么时候结束?。既然是堆栈对象(不是指针),它会在函数()结束时被破坏吗?如果是这样,当它的引用值被分配给一个新对象时会发生什么?
#include "stdafx.h"
#include <iostream>
class A
{
public:
int a, b;
A(int aa, int bb)
{
a = aa;
b = bb;
}
A(){}
};
A& Function()
{
A object;
object.a = 10;
object.b = 20;
return object;
}
int _tmain(int argc, _TCHAR* argv[])
{
A aaa = Function();
std::cout<<"\nValue : "<<aaa.a<<" "<<aaa.b;
getchar();
return 0;
}
【问题讨论】: