回顾malloc与free:
注意:malloc申请而来的只是内存,严格上说并不是对象。
int* p =(int*)malloc(16);
for(int i=0;i<4;i++)
{
p[i]=i;
}
free(p);
C++中new完全取代malloc:
例如,申请一个对象:int* p = new int (12); delete p;
new 的返回值直接就是对象指针,不用再转换。
new 的时候可以直接设初始值 new int (12)。
int* p = new int[1024].申请1024个int对象。
delete[ ] p. p=NULL;
动态创建对象,对于class类型来说,必须用new/delete来创建、销毁。
new:动态创建一个对象,申请一块内存,内部调用了构造函数。
delete:释放这个对象,调用析构函数,释放内存。
#include <stdio.h>
class Circle
{
public:
Circle()
{
x=0;
y=0;
r=0;
printf("Create 1!\n");
}
Circle(int x,int y,int r)
{
this->x=x;
this->y=y;
this->r=r;
printf("Create 2!\n");
}
~Circle()
{
printf("destroy!\n");
}
private:
int x;
int y;
int r;
};
int main()
{
Circle c1;
Circle c2(1,1,2);
Circle* c = new Circle();
delete c;
getchar();
return 0;
}
动态创建多个对象时:注意含有“默认构造函数”的类,才可以使用 new [] 一次性的创建多个对象。