可能重复:
Can a local variable's memory be accessed outside its scope?类局部变量的指针?
有没有令人担忧的事情做这样的代码(getIDs()返回一个指针):
class Worker{
private:
int workerID;
int departID;
int supervisorID;
public:
Worker()
{
workerID=0;
departID=0;
supervisorID=0;
name="anonymous";
workerAddress="none";
}
void setIDs(int worker, int depart, int supervisor)
{
workerID=worker;
departID=depart;
supervisorID=supervisor;
}
int* getIDs()
{
int id[3];
id[0]=workerID;
id[1]=departID;
id[2]=supervisorID;
return id;
}
};
,然后用它例如:
Worker obj;
obj.setIDs(11,22,33);
cout<<(*obj.getIDs())<<endl;
cout<<++(*obj.getIDs())<<endl;
cout<<++(++(*obj.getIDs()))<<endl;
我想知道的是,因为编译器显示:
警告1个警告C4172:返回临时局部变量的地址或
这不是真的重复 - 在这个问题上,海报明白他们在做什么不应该工作,并且为什么它工作困惑。在这个问题中,海报想要知道这是否会起作用。 – Justin