鉴于此代码:
#include <iostream>
using namespace std;
class samp
{
int i;
public:
samp(int i)
{
this->i=i;
}
void show()
{
cout << "Sample" <<" "<<i <<endl;
}
};
int main()
{
samp* ptr ;
for(int i=0;i<10;i++)
{
ptr = new samp(i);
ptr->show();
delete ptr;
}
ptr->show();
return 0;
}
ptr
被定义为指向10个不同的samp
类型对象。我知道删除它后,无法保证获得所需的输出。但是反复运行此程序会显示ptr
仍然指向第一个对象,而最后一个ptr->show()
(return
语句之前的语句)指向:
Sample 0
但是在循环的最后一次,ptr
指向了第10个对象,所以它应该是最后ptr->show()
(return statement
之前的语句)应该给出的:
Sample 9
为什么仍然提供Sample 0
代替Sample 9
?
答案 0 :(得分:0)
最后一个ptr-&gt; show()(返回语句之前的语句)给出:
样本0
这是因为您之前删除了指针,因此,正如您所说,无法保证获得所需的输出。你不应该使用最后一个ptr-&gt; show()。