全部代码在下方:
源代码中已经delete了指针,然后让指针=NULL;为什么还能继续调用指针????
应该怎样才能彻底删除指针。
如果delete不能彻底删除指针,只是释放空间,那么delete指针后,sizeof(指针)大小,是不是应该显示大小,请看第二张图。但是第二张图中报错,原因应该是delete之后,没有指针了,不能测量大小。
#include <iostream>
using namespace std;
class abstractbase
{
public:
virtual void boil() = 0;
virtual void brew() = 0;
virtual void pour() = 0;
virtual void food() = 0;
void makedrink();
void xianshi()
{
cout << "sss" << endl;
}
};
void abstractbase::makedrink()
{
boil();
brew();
pour();
food();
}
class coffee :public abstractbase
{
virtual void boil()
{
cout << "煮水" << endl;
}
virtual void brew()
{
cout << "冲泡" << endl;
}
virtual void pour()
{
cout << "倒入杯中" << endl;
}
virtual void food()
{
cout << "加入牛奶" << endl;
}
};
void dowork(abstractbase* a)
{
a->makedrink();
delete a;
a = NULL;
a->xianshi();
}
void test01()
{
dowork(new coffee);
}
int main()
{
test01();
system("pause");
}
源代码中已经delete了指针,然后让指针=NULL;为什么还能继续调用指针????
应该怎样才能彻底删除指针。
如果delete不能彻底删除指针,只是释放空间,那么delete指针后,sizeof(指针)大小,是不是应该显示大小,请看第二张图。但是第二张图中报错,原因应该是delete之后,没有指针了,不能测量大小。
#include <iostream>
using namespace std;
class abstractbase
{
public:
virtual void boil() = 0;
virtual void brew() = 0;
virtual void pour() = 0;
virtual void food() = 0;
void makedrink();
void xianshi()
{
cout << "sss" << endl;
}
};
void abstractbase::makedrink()
{
boil();
brew();
pour();
food();
}
class coffee :public abstractbase
{
virtual void boil()
{
cout << "煮水" << endl;
}
virtual void brew()
{
cout << "冲泡" << endl;
}
virtual void pour()
{
cout << "倒入杯中" << endl;
}
virtual void food()
{
cout << "加入牛奶" << endl;
}
};
void dowork(abstractbase* a)
{
a->makedrink();
delete a;
a = NULL;
a->xianshi();
}
void test01()
{
dowork(new coffee);
}
int main()
{
test01();
system("pause");
}