面向过程和面向对象
面向过程编程的主体是函数,他以函数为中心,自上而下,顺序执行,逐步细化
面向过程的优点:性能比面向对象高
缺点:没有面向对象易维护,易复用,易扩展
面向对象编程是以对象为中心,他要解决的问题分解成各个对象(变量,数据)而不是各个流程,步
骤,更注重对象与对象的交互(而不是方法与方法,数据与方法),步骤是分析参与问题的有哪些实
体,这些实体应该有什么属性和方法,如何通过调用这些实体的属性和方法解决问题
面向对象的优点:易维护,易复用,易扩展,由于面向对象有封装,继承,多态的特征,可以设计出低
耦合的系统,使系统更加灵活,更加易于维护
缺点:性能比面向过程低,因为类调用时需要实例化,开销比较大,消耗资源
new delete
与
malloc() free()
区别
1.new delete
是关键字,
malloc() free()
是库函数,需要头文件支持
2.new
申请的空间大小无需指定,系统根据类型自行计算,
new
返回的是申请类型的地址,不需要强
转。
malloc()
需要显示指定所申请空间的大小,且返回
void*
,因此需要强转为所需类型
3.new
申请空间的同时可以进行初始化
//初始化
char *p1=new char('a');
int *p2=new int[3]{1,2,3};
//new 整型地址
int** p=new int *;
delete p;
p=nullptr;
//new指针数组
int** p=new int* [3];
delete[] p;
p=nullptr;
//new数组指针
int(**p)[5]=new(int(*)[5]);
delete p;
p=nullptr;
//new二维数组
int(*p)[2]=new int{{1,2},{3,4},{5,6}};
delete[]p;
p=nullptr;
4.new
申请类,结构体对象内存空间会自动调用构造函数,
delete
会自动调用类,结构体的析构函数,
而
malloc(),free()
不会