即调用make_shared传递的参数必须与string某个构造函数相匹配。如果我们不传递任何参数,那么就进行值初始化。...直接管理内存
2.1 使用new动态分配和初始化对象
需要注意如下几点:
动态分配的对象执行默认初始化:内置类型或组合类型的对象的值是未定义的,而类类型对象的值用默认构造函数进行初始化
值初始化的内置类型对象有着良好定义的值...)); // p2指向一个值为42的int
需要注意的是接收指针参数的智能指针构造函数是explicit的,因此我们不能将一个内置指针隐式转换为一个智能指针,必须使用直接初始化形式来初始化一个智能指针:...[10]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
// 10个string, 前4个用给定的初始化器初始化,剩余的进行值初始化
// 如果初始化器数目大于元素数目,则new表达式失败不会分配任何内存...T的构造函数,用来在p指向的内存中构造一个函数
a.destory(p):p为类型T*的指针,此算法对p指向的对象执行析构函数
为了使用allocate返回的内存,我们必须用construct构造对象