New与Delete动态创建对象20190907

回顾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 [] 一次性的创建多个对象。

发布了140 篇原创文章 · 获赞 26 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41211961/article/details/100607397