zoukankan      html  css  js  c++  java
  • #include <boost/scoped_ptr.hpp>

    多个元素使用#include <boost/scoped_array.hpp>

    单个元素使用#include <boost/scoped_ptr.hpp>

    作用域指针

    它独占一个动态分配的对象,对应的类名为boost::scoped_ptr,定义在boost/scoped_ptr.hpp中。不像std::auto_ptr,作用域指针不能传递它所包含的对象的所有权到另一个作用域指针。一旦用一个地址来初始化,这个动态分配的对象将在析构阶段释放。因为一个作用域指针只是简单保存和独占一个内存地址,所以boost::scoped_ptr的实现就要比std::auto_ptr简单。在不需要所有权传递的时候应该优先使用boost::scoped_ptr。在这些情况下,比起std::auto_ptr它是一个更好的选择,因为可以避免不经意间的所有权传递。因此我们通常可以用它来实现动态对象的自动释放,比如在函数调用中产生的动态对象。

     

    //error C2248: “boost::scoped_ptr<int>::operator =”: 无法访问 private 成员(在“boost::scoped_ptr<int>”类中声明)

     1 #include <iostream>
     2 #include <boost/scoped_ptr.hpp>
     3 
     4 void main()
     5 {
     6     boost::scoped_ptr<int>p(new int);
     7 
     8     *p = 12;
     9 
    10     std::cout << *p.get() << std::endl;//12
    11 
    12     *p.get() = 3;
    13 
    14     std::cout << *p.get() << std::endl;//3
    15 
    16     boost::scoped_ptr<int>pA(nullptr);//独占内存
    17 
    18     pA = p;//error C2248: “boost::scoped_ptr<int>::operator =”: 无法访问 private 成员(在“boost::scoped_ptr<int>”类中声明)
    19 }
  • 相关阅读:
    45. 跳跃游戏 II
    BIO,AIO,NIO
    sqlyog连接阿里云mysql
    Hive的数据表HDFS的关系。
    云计算和虚拟机
    oracle入门笔记
    程序员开发协作管理工具
    IT行业的新思想来源
    docker所需的os基础
    docker源码和原理探究
  • 原文地址:https://www.cnblogs.com/denggelin/p/5768493.html
Copyright © 2011-2022 走看看