Teacher* p=new Teacher();
if(p==NULL)//在使用‘new’创建对象之后测试指针是否为NULL
{
std::cree<<"无法创建Teacher对象"<<endl;//输出错误信息
abort(); //异常处理函数
}
实际上在“new”之后和“delete”之前测试指针NULL都是多此一举。在C++中,如果运行时系统无法为Teacher对象分配足够的内存则会抛出一个std::bad_alloc异常,“new”操作永远不会返回为NULL。另一方面,C++语言保证,如果p等于NULL,则“delete p”不作任何事情。
Teacher* p=new Teacher();
delete p;
p=nullptr;
//delete一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变(也就是说还是指向那个地址的)。你需要手工将其赋值为NULL。