1.c++11新标准库提供了两种智能指针类型来管理动态对象,只能指针的行为类似常规指针,区别是它自动释放所指向的内存。
头文件#include <memory>
两种智能指针:
shared_ptr:允许多个指针指向同一个对象。
unique_ptr:独占所指向的对象。
伴随类weak_ptr:指向share_ptr所管理的对象
2.使用了动态生存期的资源的类程序使用动态内存出于以下三种原因
1.程序不知道自己需要使用多少对象
2.程序不知道所需对象的准确类型
3.程序需要在多个对象间共享数据。
使用动态内存的一个常见的原因是允许多个对象共享相同的状态。
3.值初始化和默认初始化的区别
对于定义了自己的构造函数的类类型来说,值初始化是没什么意义的;而对于内置类型,值初始化的内置类型对象有着良好定义的值,而默认初始化的对象的值则是未定义的。
4.allocater类
它帮助我们将内存分配和对象构造分离开来(new它将分配内存和对象构造组合在一起了,而delete将释放内存和对象析构组合在一起了)