これは、関数内のローカルクラスオブジェクトのスコープをチェックするために作成されたサンプルプログラムです。ここでは、クラスAのオブジェクトを作成し、それに値を割り当てて、の参照によってそのオブジェクトを返しますFunction()
。変数のスコープがいつ終了するか知りたいのですが、スタックオブジェクト(ポインタではない)なので、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;
}