zoukankan      html  css  js  c++  java
  • C++ 智能指针auto_ptr、shared_ptr、unique_ptr《三》-----智能指针的选择

            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应用举例,后续补上

  • 相关阅读:
    java基础5 (一维)数组和二维数组
    Java 内部类
    Java 抽象类和接口
    Java 多态
    Java 继承
    Java 包(package)
    Java String类和StringBuffer类
    Java 数组
    Java 封装与类
    Java 概述和编程基础
  • 原文地址:https://www.cnblogs.com/winslam/p/9073924.html
Copyright © 2011-2022 走看看