大家好,帮我看看我总结的对吗?不对的请指点。要是正确请帮我分析一下。谢谢~
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();
}