boost_array_bind_fun_ref Array.cpp #include<boost/array.hpp> #include <iostream> #include <string> using namespace std; using namespace boost; void mainA () { array <int, 5> barray = { 1, 2, 3, 4, 5 }; barray[0] = 10; barray.at(4)…
本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.…
[1]boost::shared_ptr简介 boost::shared_ptr属于boost库,定义在namespace boost中,包含头文件#include<boost/shared_ptr.hpp>便可以使用. 上篇<智能指针boost::scoped_ptr>中我们看到boost::scoped_ptr独享所有权,不允许赋值.拷贝. 而boost::shared_ptr是专门用于共享所有权的,由于要共享所有权,其在内部使用了引用计数机制.同时也就意味着支持赋值和拷贝.…
[1]boost::weak_ptr简介 boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用. [2]boost::weak_ptr详解 智能指针boost::scope_ptr和智能指针boost::shared_ptr就完全可以解决所有单个对象内存的管理问题. 这儿咋还多出一个boost::weak_ptr,是否还有某些案例我们没有考虑到呢? 回答:有.首先 boost::w…
内存管理是一个比较繁琐的问题,C++中有两个实现方案: 垃圾回收机制和智能指针.垃圾回收机制因为性能等原因不被C++的大佬们推崇, 而智能指针被认为是解决C++内存问题的最优方案. 1. 智能指针定义 一个智能指针就是一个C++的对象, 这对象的行为像一个指针,但是它却可以在其不需要的时候自动删除.注意这个“其不需要的时候”, 这可不是一个精确的定义.这个不需要的时候可以指好多方面:局部变量退出函数作用域.类的对象被析构…….所以boost定义了多个不同的智能指针来管理不同的场景. shared…
循环引用: 引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象.一个简单的例子如下: #include <string>#include <iostream>#include <boost/shared_ptr.hpp>#include <boost/weak_ptr.hpp> class parent;class children; typedef boost::shared_ptr<parent> paren…
简单介绍 内存管理一直是 C++ 一个比較繁琐的问题,而智能指针却能够非常好的解决问题,在初始化时就已经预定了删除.排解了后顾之忧.1998年修订的第一版C++标准仅仅提供了一种智能指针:std::auto_ptr(现以废弃),它基本上就像是个普通的指针:通过地址来訪问一个动态分配的对象. std::auto_ptr之所以被看作是智能指针.是由于它会在析构的时候调用delete操作符来自己主动释放所包括的对象. 当然这要求在初始化的时候,传给它一个由new操作符返回的对象的地址.既然std::a…
1.scoped_ptr的实现原理及特性 特性:scoped_ptr和auto_ptr类似,但最大的区别就是不能转让管理权限,也就是说scoped_ptr禁止用户进行拷贝和赋值 实现原理:如何才能禁止一个类进行拷贝和复制呢?我们只需要将类的拷贝构造函数和赋值运算符重载的访问限定符设置为私有的可以 样例如下: class ScopedPtr{ private: ScopedPtr(const ScopedPtr& sp); ScopedPtr& operator(const ScopedPt…
[1]boost::scoped_ptr简介 boost::scoped_ptr属于boost库,定义在namespace boost中,包含头文件#include <boost/scoped_ptr.hpp>便可以使用. 一句话:一个作用域指针(即所谓智能指针scoped_ptr对象)独享一个动态分配的内存对象管理所有权. [2]boost::scoped_ptr与stl::auto_ptr的联系 boost::scoped_ptr与std::auto_ptr两者都可以方便的管理单个堆内存对…
boost库中的智能指针shared_ptr, 功能强大, 且开销小,故受到广大coder的欢迎. 但在实际的使用过程中,笔者也发现了一些不足. 1.定制的删除器 shared_ptr除了可以使用默认的delete删除器来删除资源, 也可以定制删除器来删除资源, 但是删除的时候没有办法返回值, 这应该可以算是一个缺陷. 如对于文件句柄的操作 bool CFileIO::Open(LPCTSTR fileName, LPCTSTR mode){    m_pFile.reset(_tfopen(f…