我在C++ 测验中遇到了这个问题(初学者 C++):我的答案不正确,我想了解正确答案背后的解释 - “未定义的行为”
问题:函数 foo() 返回后,下面的代码会发生什么?
class base
{
public:
base() { }
~base() { }
};
class derived : public base
{
private:
int *p_pi_values;
public:
derived() : p_pi_values(new int[100]) { }
~derived() { delete [] p_pi_values; }
};
void foo(void)
{
derived *p_derived = new derived();
base *p_base = p_derived;
// Do some other stuff here.
delete p_base;
}
我给出了这个答案,结果是错误的 ==> 整数数组将不会被正确删除。
正确答案 ==> 行为未定义。