RefBase Class¶
Header: #include "easyar/base.hpp"
Inherited By: AugmentedTarget, AugmentedTargetList, Augmenter, BarCodeScanner, CameraCalibration, CameraDevice, Frame, Image, ImageList, ImageTracker, Target, TargetList, VideoPlayer
Description¶
RefBase是大多数EasyAR类的基类。
RefBase与C++的std::shared_ptr行为类似,它是一个对真实对象的非常薄的封装。对于一个继承自RefBase的类 C ,你可以像std::shared_ptr< C_internal >一样使用。 C 所引用的内存是引用计数的,并且以类似于std::shared_ptr的方式管理。同时, C 的线程安全性与std::shared_ptr相同 。EasyAR里面继承于RefBase的类通常是延迟初始化的,也就是说在特定方法被调用之前,对象是无效的(operator bool()返回false)。当然如果你倾向于使用裸指针,完全可以在代码中使用 C* 。
Public Functions¶
RefBase()¶
创建RefBase对象。
RefBase(const RefBase& b)¶
创建RefBase对象并指向与 b 相同的内部对象。
virtual ~RefBase()¶
销毁对象。只有在没有其它引用的时候才会释放包括线程在内的所有资源。
RefBase& operator=(const RefBase& b)¶
赋值操作符。当前的RefBase将会指向与 b 相同的对象。
operator bool() const¶
在内部对象被销毁或没有引用内部对象的时候返回false,否则返回true。
bool operator ==(const RefBase& other) const¶
相等操作符,当对象和 other 指向相同内部对象的时候返回true,否则返回false。
bool operator !=(const RefBase& other) const¶
不等操作符,当对象和 other 指向不同内部对象的时候返回true,否则返回false。
template<class T> T cast_dynamic() const¶
类似于std::dynamic_pointer_cast。动态转换对象为 T 类型。
template<class T> T cast_static() const¶
类似于std::static_pointer_cast。静态转换对象为 T 类型。
void clear()¶
清除对象。包括线程在内的所有资源都将被释放。