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 }
  • 相关阅读:
    Go 语言机制之逃逸分析
    类型转换和类型断言
    浅析rune数据类型
    Go 文件操作(创建、打开、读、写)
    字符编码笔记:ASCII,Unicode 和 UTF-8
    cmd.exe启动参数详解
    linux下.so、.ko、.a的区别
    Python 和C#的交互
    Innodb表压缩过程中遇到的坑(innodb_file_format)
    更改mysql的加密方式和密码策略
  • 原文地址:https://www.cnblogs.com/denggelin/p/5768493.html
Copyright © 2011-2022 走看看