• #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 }
  • 相关阅读:
    Django【十五】pillow模块使用
    Django【十四】内置的anth认证
    Django【十三】form组件。
    Django【十二】中间价
    Django【十一】cookie-sesson
    Django【十】Ajax
    Django【八】多表操作
    Django【九】事务和锁
    python协程
    python多线程
  • 原文地址:https://www.cnblogs.com/denggelin/p/5768493.html
Copyright © 2020-2023  润新知