shared_ptr<T>::operator->返回的是T*类型指针,非const T*指针.因此通过const shared_ptr<T>&类型的ptr可以直接调用T各个原始的方法,不用担心const与非const问题.具体shared_ptr::operator->实现如下,摘自boost1.52.0版本boost\smart_ptr\shared_ptr.hpp T * operator-> () const // never throws { B…
文档: http://www.boost.org/doc/libs/1_57_0/libs/smart_ptr/shared_ptr.htm shared_ptr构造有个原型 template<class Y, class D> shared_ptr(Y * p, D d);d是deleter.如shared_ptr<FILE> ctx(fp,::flose); Introduction The shared_ptr class template stores a pointer…
1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不了了,如此我们再引入一个智能指针,专门用于处理复制,参数传递的情况,这便是如下的boost::shared_ptr. boost::shared_ptr 属于 boost 库,定义在 namespace boost 中,包含头文件#include<boost/smart_ptr.hpp> 便可以使…
1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不了了,如此我们再引入一个智能指针,专门用于处理复制,参数传递的情况,这便是如下的boost::shared_ptr. boost::shared_ptr 也属于 boost 库,定义在 namespace boost 中,包含头文件#include<boost/smart_ptr.hpp> 便可以…
[1]boost::shared_ptr简介 boost::shared_ptr属于boost库,定义在namespace boost中,包含头文件#include<boost/shared_ptr.hpp>便可以使用. 上篇<智能指针boost::scoped_ptr>中我们看到boost::scoped_ptr独享所有权,不允许赋值.拷贝. 而boost::shared_ptr是专门用于共享所有权的,由于要共享所有权,其在内部使用了引用计数机制.同时也就意味着支持赋值和拷贝.…
boost库中的智能指针shared_ptr, 功能强大, 且开销小,故受到广大coder的欢迎. 但在实际的使用过程中,笔者也发现了一些不足. 1.定制的删除器 shared_ptr除了可以使用默认的delete删除器来删除资源, 也可以定制删除器来删除资源, 但是删除的时候没有办法返回值, 这应该可以算是一个缺陷. 如对于文件句柄的操作 bool CFileIO::Open(LPCTSTR fileName, LPCTSTR mode){    m_pFile.reset(_tfopen(f…
共享指针 这个智能指针命名为boost::shared_ptr,定义在boost/shared_ptr.hpp里.智能指针boost::shared_ptr基本上类似于boost::scoped_ptr.关键不同之处在于boost::shared_ptr不一定要独占一个对象.它可以和其他boost::shared_ptr类型的智能指针共享所有权.在这种情况下,当引用对象的最后一个智能指针销毁后,对象才会被释放. 因为所有权可以在boost::shared_ptr之间共享,任何一个共享指针都可以被…
以前使用ACE实现Server框架,但是觉得太笨重,决定采用boost.asio来写服务器程序: 1.服务器构建在linux上面:当然也可以在windows下运行 2.io部分采用非阻塞模式.业务逻辑部分采用同步线程池实现 3.封装io操作及状态,用户应用程序无需关心io详细操作 所以决定采用boost::asio框架来写服务器: boost::asio::io_service提供了核心IO功能.和异步IO对象,它包括: boost::asio::ip::tcp::socket boost::a…
一.shared_ptr shared_ptr作为一个动态分配的对象,当最后一个指向其内容的指针销毁(destroyed)或重置(reset),其指向的内容会被销毁(deleted).不再需要显式调用delete释放指针指向的内存空间. shared_ptr的构造还需要new调用,这导致了代码中的某种不对称性.虽然shared_ptr很好地包装了new表达式,但过多的显式new操作符也是个问题.举例如下, shared_ptr<]> p1( ] ); shared_ptr<double[…
[20171120]bash使用here documents的一个小细节.txt --//昨天看bash文档,,发现一些小细节,做一个记录,就是EOF加引号的问题. command <<'EOF' cmd1 cmd2 arg1 $var won't expand as parameter substitution turned off by single quoting EOF --//例子: $ cat a.sh#! /bin/bashcat <<'EOF'this is a t…