本文为初见,Netplus快速开始之PingPong Example系列第三篇
1. netp::ref_ptr & netp::ref_base
C++是一门面向对象的语言,一切皆可为对象,然对象的创建与销毁,指针的传递、共享,在稍大一点的工程里面,如豆腐雕花,如履薄冰,一不小心,直接崩坏,尤其是引入多线性以及异步编程之后,更是令人心力交瘁,这种动不动就出王炸的逆天脾气,常使得开发者谈C色变。
那么对象的管理,到底有没有好一点的办法呢,netplus选择了ref_ptr&ref_base, 顾名思义,这是一种基于引用计数的对象管理机制,因篇幅关系,这里暂时只讲如何使用它。
- 在Netplus里面,绝大部分的class都继承于ref_base,ref_base作为根,提供引用计数的基本功能。
- 继承自ref_base的class,直接new/delete 的时候,编译器会报错。
- 继承netp::ref_base的class,需要配合模板netp::ref_ptr<T>进行使用。
- netp::ref_ptr<T>对象,只能通过netp::make_ref<T> 进行创建,不需要的时候,需赋值为nullptr。
- 每赋值给一次,引用计数增1,每被置nullptr一次,引用计数减1,当减到0的时候