一个关于指针与作用域的问题
请看这段代码:class A
{
public:
void Func(void){ cout << “Func of class A” << endl; }
};
void Test(void)
{
A *p;
{
A a;
p = &a; // 注意 a 的生命期
}
p->Func(); // p是“野指针”
}
这个程序在VISUAL C++下可以正常运行,得到正确结果。
请问为什么?a的作用域在内部花括号里,出来以后,理应被析构,内容销毁,为什么指向它的指针仍有它的值?
注:此程序及问题摘自林锐博士的《高质量C++/C编程指南》。