BOOST之scoped_ptr源码及与auto_ptr的区别
来源:互联网 发布:淘宝如何转企业店铺 编辑:程序博客网 时间:2024/05/20 02:51
BOOST库里面给出了几种智能指针以用来完善标准C++给出的auto_ptr的不足。
首先我们先来看看第一种scoped_ptr从名字上便能看出来区域型的智能指针,是的,这种指针和auto_ptr非常相似,但是这种智能指针不能转让所有权。即一旦获取类对象的管理权便不能从其手中夺走它,是个铁公鸡.......
下面贴上源码:
template<class T>class scoped_ptr{ private: T* px; scoped_ptr(scoped_ptr const &); scoped_ptr & operator=(scoped_ptr const &); public: typedef T element_type; explicit scoped_ptr(T *p=0):px(p){} ~scoped_ptr(){delete px;} void reset(T *p=0){ delete px; px=p; } T &operator *()const{return *px;} T *operator->()const{return px;} T *get()const{return px;} void swap(scoped_ptr&b){ T *p = b.get(); b.reset(get()); px=p; }};简单测试代码:
#include"scoped_ptr.h"#include<iostream>using namespace std;int main(){ scoped_ptr<string> sp(new string("text")); cout<<*sp<<endl; cout<<sp->size()<<endl;}
scoped_ptr类通过把拷贝构造函数和赋值操作定义为私有的来达到不转让所有权的目的。
参考资料:BOOST完全开发指南 罗剑锋著
0 0
- BOOST之scoped_ptr源码及与auto_ptr的区别
- scoped_ptr 与auto_ptr 区别
- boost之scoped_ptr和auto_ptr
- C/C++: std::auto_ptr 与 boost:: scoped_ptr 区别
- scoped_ptr 与 auto_ptr 与 shared_ptr 区别总结
- scoped_ptr和auto_ptr的主要区别
- 几种智能指针的比较(std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::weak_ptr)
- auto_ptr,scoped_ptr,shared_ptr,weak_ptr区别
- boost::scoped_ptr 源码分析
- boost:: scoped_ptr源码剖析
- boost 之 scoped_ptr
- boost之scoped_ptr
- boost库之scoped_ptr
- boost学习之-scoped_ptr
- 《我的泛型编程观》之boost.scoped_ptr、scoped_array源码分析
- boost准模板库scoped_ptr指针的使用以及auto_ptr智能指针的对比
- 智能指针 boost(scoped_ptr,scoped_array,shared_ptr,shared_array) 和 std (auto_ptr)的比较 .
- Boost源码学习---scoped_ptr.hpp
- 展讯8825camera驱动流程
- 二叉搜索树(二叉查找树,二叉排序树)的详细实现
- iOS Auto Layout的使用
- 第七周工作总结——接收信号同步
- jquery(七)jquery动画大体验
- BOOST之scoped_ptr源码及与auto_ptr的区别
- 设计模式之代理模式
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- 【IzPack】使用----install.xml
- 搜索引擎优化究竟是否简单?——北大青鸟
- JAVA基础(一) StringUtils中 isNotEmpty 和isNotBlank的区别
- 11 个惊人的 CSS3 和 jQuery 制作的教程收集
- 使用3.0实现微信打飞机——12.游戏结束场景
- hdoj.1319 Prime Cuts 20140821