何时需要使用 shared_ptr ?
(1) 程序不知道自己需要使用多少对象. 如使用窗口类, 使用 shared_ptr 为了让多个对象能共享相同的底层数据.
std::vector<std::string> v1; // 一个空的 vector
// 在某个新的作用域中拷贝数据到 v1 中
{
std::vector<std::string> v2;
v2.push_back("a");
v2.push_back("b");
v2.push_back("c");
v1 = v2;
} // 作用域结束时 v2 被销毁, 数据被拷贝到 v1 中
(2) 程序不知道所需对象的准确类型.
(3) 程序需要在多个对象间共享数据.