首页 > 学院 > 开发设计 > 正文

new delete 基础应用

2019-11-14 08:43:57
字体:
来源:转载
供稿:网友

new delete基础

基础应用

#include "iostream"using namespace std;int main(){	//1.基础的使用	//new 基本类型	int *p = (int *)malloc(sizeof(int));	free(p);	int *p2 = new int;	delete p2;	//分配数组	int *p3 = new int[4];	p3[0] = 1;	p3[1] = 2;	p3[2] = 2;	p3[3] = 3;	cout << p3[0] << endl;	delete[] p3;	system("pause");	return 0;}这里面只需要注意一点就是基础类型和数组类型的删除区别就OK。

深入

1.区别
#include "iostream"using namespace std;class MyClass{public:	MyClass()	{		cout << "我是构造函数" << endl;	}	~MyClass()	{		cout << "我是析构函数" << endl;	}PRivate:};int main(){	//1.基础的使用	//new 基本类型	int *p = (int *)malloc(sizeof(int));	//free(p);	delete p;	int *p2 = new int;	//delete p2;	free(p2);	//分配数组	int *p3 = new int[4];	p3[0] = 1;	p3[1] = 2;	p3[2] = 2;	p3[3] = 3;	cout << p3[0] << endl;	//delete[] p3;	free(p3);	//我们在这里发现如果我用malloc和用new创建的基础对象在使用方面没什么区别	//free和delete也可以相互的删除new和malloc的内存	//区别在对象的时候不一样	MyClass *my = (MyClass *)malloc(sizeof(MyClass));	system("pause");	return 0;}我们发现没有执行构造函数。
#include "iostream"using namespace std;class MyClass{public:	MyClass()	{		cout << "我是构造函数" << endl;	}	~MyClass()	{		cout << "我是析构函数" << endl;	}private:};int main(){	//1.基础的使用	//new 基本类型	int *p = (int *)malloc(sizeof(int));	//free(p);	delete p;	int *p2 = new int;	//delete p2;	free(p2);	//分配数组	int *p3 = new int[4];	p3[0] = 1;	p3[1] = 2;	p3[2] = 2;	p3[3] = 3;	cout << p3[0] << endl;	//delete[] p3;	free(p3);	//我们在这里发现如果我用malloc和用new创建的基础对象在使用方面没什么区别	//free和delete也可以相互的删除new和malloc的内存	//区别在对象的时候不一样	MyClass *my = (MyClass *)malloc(sizeof(MyClass));	MyClass *my1 = new MyClass();	system("pause");	return 0;}new的话可以执行构造函数
#include "iostream"using namespace std;class MyClass{public:	MyClass()	{		cout << "我是构造函数" << endl;	}	~MyClass()	{		cout << "我是析构函数" << endl;	}private:};int main(){	//1.基础的使用	//new 基本类型	int *p = (int *)malloc(sizeof(int));	//free(p);	delete p;	int *p2 = new int;	//delete p2;	free(p2);	//分配数组	int *p3 = new int[4];	p3[0] = 1;	p3[1] = 2;	p3[2] = 2;	p3[3] = 3;	cout << p3[0] << endl;	//delete[] p3;	free(p3);	//我们在这里发现如果我用malloc和用new创建的基础对象在使用方面没什么区别	//free和delete也可以相互的删除new和malloc的内存	//区别在对象的时候不一样	MyClass *my = (MyClass *)malloc(sizeof(MyClass));	free(my);	MyClass *my1 = new MyClass();	delete(my1);	system("pause");	return 0;}

总结

从以上的代码中我们可以看出,malloc和free是不执行构造函数和析构函数的,但是new和delete他们组成是要自动调用构造函数还有析构函数的。如果是基础的类型的话这两者基本上没有区别。
上一篇:疑问拾遗

下一篇:面向对象

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表