1、 堆内存操作(new/delete)
C语言中提供malloc和free两个系统级别的函数,完成对堆内存的申请和释放。
C++提供关键字new/new[]和delete/delete[],完成对堆内存的申请和释放。
int *p = new int(10); //申请一个int类型空间的大小,初始值为10
delete p;
float *pp = new float[10] {1.2, 3.4}; //申请十个int类型大小的数组,初始化为1.2和3.4
delete []pp;
char **ppp = new char*[5]; //申请指针数组
delete []ppp;
使用规则:
1、new/delete是关键字,效率高于malloc和free。
2、配对使用,避免内存泄漏和多重释放。
3、避免交叉使用,如malloc申请的空间去delete,new出的空间被free。
重点:此两关键字,重点用在类对象的申请与释放。申请的时候会调用构造器完成初始化,
释放的时候,会调用析构器完成内存的清理。
2、命名空间
命名空间为了大型项目开发,而引入的一种避免命名冲突的一种机制。
C语言的命名空间分为,全局无名命名空间和函数命名空间。
C++的全局无名命名空间(::)。
namespace的定义:C++引入namespace的本质是对全局命名空间再次划分。确切的说,是对全局的函数和变量再次进行作用域打包。
三种使用方法:
1、sn::member; 直接使用命名空间成员,不会产生命名冲突。
2、using sn::member; 命名空间成员,融入该语句所在的命令空间,可能会产生命冲突。
3、using namespace sn; 将命名空间(即全体成员),融入该语句所在的命令空间,可能会产生命冲突。
协同开发:
1、同名命名空间可以合并,是协同开发的基础。
3、字符串类(string class)
string 是C++中处理字符串的类,是对C 语言中字符串的数据和行为的包装。