大家好,帮我看看我总结的对吗?不对的请指点。要是正确请帮我分析一下。谢谢~
delete[] p是告诉C++,p指向的是一个数组。 在编写程序时,若p指向的是基本类型的数组,[]漏掉也不会出错;但若p指向的是非基本类型的数组的话,就会出现错误。在析够函数中,带[]和不带[]都不会出错的。
#include <iostream.h>
#include <string.h>
class Person
{
public:
Person(){pName = new int[3];};
~Person()
{
delete[] pName; //在析够函数中有没有[]均不会出错。
}
protected:
int* pName;
};
void fn()
{
Person * ps = new Person[4];
delete[] ps; //去掉[]会出错的。
/*
int* p = new int[3];
delete p; //此时有没有[]均不会出错。
*/
}
void main()
{
fn();
}