shared_ptr适用于:程序要使用多个指向同一个对象的指针;比如:有一个指针数组,最大元素和最小最小元素; 两个对象都包含指向第三个对象的指针; STL容器包含指针。很多STL算法支持赋值和赋值操作,这些操作可用shared_ptr,但不适用于shared_ptr(编译器发出警告)和 auto_ptr行为不确定。【boost库也提供智能指针】
unique_ptr适用于:程序不需要多个指向同一个对象的指针,如果函数使用new分配内存,并返回指向该内存的指针,将其返回类型声明为unique_ptr是不错的选择。这样,所有权讲转 让给 接受返回值的unique_ptr,而该智能指针将负责调用delete。【在: C++ 智能指针auto_ptr、shared_ptr、unique_ptr《二》-----为何unique_ptr优于auto_ptr 中第三点我已经提及】;举例子如下:
1 #include<memory> 2 #include<iostream> 3 4 using namespace std; 5 6 unique_ptr<string> demo(const char* s) 7 { 8 unique_ptr<string> temp(new string(s)); 9 return temp; 10 } 11 12 int main() 13 { 14 unique_ptr<string> ps; 15 ps = demo("uniquely special");//贼几把安全 16 17 return 1; 18 }
简单写到这里,还有些问题请你参考《c++ Primer Plus》(第六版)
有关这里shared_ptr应用举例,后续补上