C++类模板的分离编译过去很多类模板都是整个类连同实现都放在一个头文件里,像STL库就是遵循这样的策略来实现类模板的。现在的标准正试图矫正这种局面。
在实现中又许多函数模板。这意味着每个函数都必须包含模板声明,并且在使用作用域操作符的时候,类的名称必须通过模板变量来实例化。
比如一个operator=的代码:template
const MemoryCell...
分类:
编程语言 时间:
2015-03-29 22:15:18
阅读次数:
189
C++智能指针主要是在普通指针的基础上封装了一层,使得使用者对指针的使用更加方便和放心,在使用的过程中不用担心指针因为释放问题而导致的异常。在C++11中,智能指针主要有三种:shared_ptr ptr, unique_ptr ptr, weak_ptr ptr;
shared_ptr ptr的初始化可以通过以下几种方式:
1)shared_ptr ptr = m...
分类:
编程语言 时间:
2015-03-29 01:54:51
阅读次数:
215
何时我们需要智能指针?
资源所有权的共享
共享所有权是指两个或多个对象需要同时使用第三个对象的情况。这第三个对象应该如何(或者说何时)被释放?为了确保释放的时机是正确的,每个使用这个共享资源的对象必须互相知道对方,才能准确掌握资源的释放时间。从设计或维护的观点来看,这种耦合是不可行的。更好的方法是让这些资源所有者将资源的生存期管理责任委派给一个智能指针。当没有共享者存在时,智能指针就可以...
分类:
其他好文 时间:
2015-03-28 14:26:28
阅读次数:
170
何时我们需要智能指针?
资源所有权的共享
共享所有权是指两个或多个对象需要同时使用第三个对象的情况。这第三个对象应该如何(或者说何时)被释放?为了确保释放的时机是正确的,每个使用这个共享资源的对象必须互相知道对方,才能准确掌握资源的释放时间。从设计或维护的观点来看,这种耦合是不可行的。更好的方法是让这些资源所有者将资源的生存期管理责任委派给一个智能指针。当没有共享者存在时,智能指针就可以...
分类:
其他好文 时间:
2015-03-28 14:24:17
阅读次数:
121
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏开发中,往往不会用到shared_ptr。
在cocos2d-x3.2以及更高的版本中,cocos...
分类:
其他好文 时间:
2015-03-28 13:04:33
阅读次数:
750
前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元...
分类:
其他好文 时间:
2015-03-20 10:37:09
阅读次数:
242
从智能指针说起 unique_ptr取代auto_ptr 返回值优化(RVO) make_unique...
分类:
其他好文 时间:
2015-03-19 13:19:31
阅读次数:
204
//智能指针类
//----------------------------------------
//1.基数据放在使用计数类中
//实际类指向->使用计数类->基数据
//使用计数类
class U_ptr{
friend class Hasptr;//友元类
int *ip;//这个就是要保护的基数据
size_t use;
U_ptr(int *p):ip(p),use(1){...
分类:
其他好文 时间:
2015-03-18 20:39:07
阅读次数:
121
TCP vs UDP vs ICMP如前所述,对于所有类型的socket,并不是都有同样的成员函数。下面的表格列出了3个socket中存在的成员函数:...
分类:
其他好文 时间:
2015-03-17 21:52:33
阅读次数:
161
13.以对象管理资源
void f()
{
Investment* pInv = createInvestment();
...
delete pInv;
}
以上代码存在问题:在delete之前出现异常,导致pInv无法删除,造成资源泄露。
解决方法:RAII Resource Acq...
分类:
编程语言 时间:
2015-03-17 16:00:09
阅读次数:
304