1.数组
- 地址连续存放
- 初始化:
- 列出全部初始值后,第1维下标个数可以省略
- 不做初始化,局部变量中为垃圾数据,static变量为0
- 只对一部分进行初始化,其余数值初始化为0
2.动态内存分配:
- new
- delete
3.动态创建数组
new p[N]; delele[] p;
构造函数和析构函数会被调用N次
4.动态创建多维数组
new p[M][N] ;p为指向行的指针
5.动态数组封装成类
检查下标越界
6.智能指针:垃圾回收机制,
unique_ptr:不允许多个指针共享资源,可用move()转移指针
shared_ptr:多个指针共享资源
weak_ptr:可复制shared_ptr,构造和释放对资源不产生影响
7.vector对象:类模板(数组) 类似动态数组系统封装成类
作用:封装任何类型的动态数组,自动创建和删除; 数组下标越界检查
定义:vector<类型> 对象名(长度)
使用:对象名[下标];对象名.size();
8.对象的浅层复制和深层复制(复制构造函数)
浅层复制的问题:当原含有指针的对象复制到新对象时,只复制指针地址,若析构原对象,会把新对象同时析构掉。此时需要深层复制
9.移动构造
将源对象的状态转移到目标对象上,
使用场景:返回含有指针成员的对象,
定义:类名(类名&& 对象)
10.字符串常量:string类(C++)和字符数组(C风格)
连续顺序存放,以‘\0’结尾
string类常用操作:
getline(cin,str,','); 输入整行字符,第三个参数是字符串结束的标志分隔符