【发布时间】:2012-08-31 08:53:15
【问题描述】:
谁能解释一下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 是一个指针,它保存由函数 Double 创建的内存。 temp 的范围应该只对 double 的函数有效,但它也可以在 main 函数中访问。
那么任何人都可以解释为什么会发生这种情况。我想这是一个小疑问,但无法弄清楚。
【问题讨论】:
-
只需评论:
this->是不必要的。