谁能解释在cpp中创建的对象的范围
#include <iostream>
using namespace std;
class box
{
public:
int i;
box* doubled ();
};
box* box::doubled ()
{
box *temp = new box;
temp->i = 2*this->i;
return temp;
}
int main ()
{
box *obj1 = new box;
obj1->i = 5;
box *obj2;
obj2 = obj1->doubled();
delete obj1;
cout << "i = " << obj2->i << endl;
return 0;
}
在上面的示例代码中,obj2 是一个指针,它保存由函数Doubled创建的内存。temp 的范围应该只对 double 的函数有效,但它也可以在 main 函数中访问。
所以任何人都可以解释为什么会这样。我想这是一个小疑问,但无法弄清楚。