请教一个看似简单问题
下面是一个简单的程序:
#include <iostream>
class Test
{
public :
int getInt(){
int tmp = 1;
return tmp;
}
char* getStr(){
char tmp[] = {'a','b','c'};
return tmp;
}
};
int main(void){
Test myTest;
std::cout<<myTest.getInt()<<std::endl;
int tmp[] = {1,2,3};
std::cout<<*tmp<<std::endl;
std::cout<<*(myTest.getStr())<<std::endl;
return 0;
}
//记得很多次面试的时候,被别人问及那个getStr()函数(方法),我总是回答它的返回值是不可预料的,因为当调用返回以后,堆栈已经关闭了。面试的人也觉得对。
但是,上面那个简单的程序我却发现能打印出来预期的结果——难道我以前的理解错了?
如果没错,这个代码该怎么写才能体现那种堆栈关闭以后返回值不可预料的情况?
请大家指点,谢谢先。