OSG的智能指针,osg::ref_ptr<>

osg::Referenced类管理引用计数内存块,osg::ref_ptr需要使用以它为基类的其它类作为模板参数。

osg::ref_ptr<>类模板重新实现了一系列C++重载符和成员函数,主要有:

  • T* get(): 返回管理的指针, { return _ptr; }
  • T& operator*(): 返回间接引用,{ return *_ptr; }
  • T* operator->():  { return _ptr; }
  • operator=(): 各种赋值
  • operator==(), operator!=(), and operator!():
  • valid(): { return _ptr!=0; }
  • release():

简单示例:

#include <osg/ref_ptr>
#include <osg/Referenced>
#include <iostream> class MonitoringTarget : public osg::Referenced
{
public:
MonitoringTarget(int id) : _id(id)
{
std::cout << "构造目标 " << _id << std::endl;
}
protected:
virtual ~MonitoringTarget()
{
std::cout << "目标销毁 " << _id << std::endl;
} int _id;
}; int main(int argc, char *argv[])
{
osg::ref_ptr<MonitoringTarget> target = new MonitoringTarget();
std::cout << "引用前引用计数为: "
<< target->referenceCount() << std::endl;
osg::ref_ptr<MonitoringTarget> anotherTarget = target;
std::cout << "引用后引用计数为: "
<< target->referenceCount() << std::endl;
for (unsigned int i = ; i<; ++i)
{
osg::ref_ptr<MonitoringTarget> subTarget =
new MonitoringTarget(i);
}
}

osg(OpenSceneGraph)学习笔记1:智能指针osg::ref_ptr<>的更多相关文章

  1. C++学习笔记: 智能指针

    c++ 智能指针学习新的 class Simple { public: Simple() { number = param; std::cout << "Simple: &quo ...

  2. C++学习笔记5_智能指针

    1. 一般的指针int main(void){ int *p=new int; *p=20; delete p; return 0;}智能指针能自动回收#include<memory> 记 ...

  3. OpenSceneGraph学习笔记

    VirtualPlanetBuilder编译方法 转自:http://www.boyunjian.com/do/article/snapshot.do?uid=7327932418831703800 ...

  4. Go语言学习笔记九: 指针

    Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...

  5. 【OSG学习笔记之一:】OSG+VS2010+win7 64位环境搭建

    虽然出生的时候,没有说过“Hello World!”,但是自从走上了编程之路,每一次输出“Hello World!”的时候,都觉得好比中了彩票大奖似的: 仔细算算,从2012年暑假到现在,经历了3年半 ...

  6. C++笔记(11) 智能指针

    1. 设计思想 智能指针是行为类似于指针的类对象,但这种对象还有其他功能.首先,看下面的函数: void remodel(std::string & str) { std::string * ...

  7. C++学习笔记之this指针

    为了说明这个问题,首先来建立一个简单的类 #include <iostream> #include <string> using namespace std; class Bo ...

  8. C++学习笔记之函数指针

    与数据项类似,函数也有地址.函数的地址是存储其机器语言代码的内存开始的地方. 一.函数指针的基础知识 假设要设计一个名为estimate()的函数,估算编写指定行数代码所需时间,并且希望不同的程序员都 ...

  9. C语言学习笔记 (007) - 数组指针和通过指针引用数组元素的方法总结

    1.数组指针:即指向数组的指针 那么, 如何声明一个数组指针呢? ]; /*括号是必须写的,不然就是指针数组:10是数组的大小*/ 拓展:有指针类型元素的数组称为指针数组. 2.通过指针引用数组元素的 ...

随机推荐

  1. C socket demo

    一.服务端-server.c #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> # ...

  2. NGUI 3.5教程(六)Font字体

    字体是UI很重要的一部分.今天用NGUI 3.5,制作一下字体. 以下是我做的一个射击游戏的DEMO.子弹数量,就使用了NGUI的字体显示.效果例如以下: 步骤: 1,寻找(或者制作)字体.我这里图方 ...

  3. 多平台响应键盘事件!(适用于Cocos2dx 3.0 alpha以上版本号)

    Hello everyone! For a week I've been looking on how to make a keyboard work! I managed to figure it ...

  4. Android开发之自定义圆形的ImageView的实现

    android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然 ...

  5. iOS之AlertController的使用

    iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController 在实现视图控制器间的过渡动画效果和自适应设备尺 ...

  6. sql2012 新增 OFFSET/FETCH

    SQL Server 对行数的排序提供了 TOP 筛选.SQL Server 2012 新增了 OFFSET 筛选. 一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回 ...

  7. 编码、解码Html代码

    引用 Base64-80.js 文件 做网页的时候有时候需要把富文本框的html代码保存到数据库,那么就需要编码后保存到数据库.浏览器端或后台再解码作绑定 *编码:encode64(str) *解码: ...

  8. javascript创建对象和属性的几种方式

    一句话,javascript里面的对象,即是函数.方法. (一)第一种: a.声明对象:var JHSoft = JHSoft || {}; 或者 var JHSoft=new Object(); b ...

  9. 搭建showslow:前端性能跑分及优化工具

    综述:showslow是一个开源的工具,集成并通过Yahoo yslow.google page speed.dynaTrace AJAX等工具监测网站各项性能指标,然后通过图表和排名展示出来. 1. ...

  10. OC加强-day03

    #program mark - 0_18 分类的使用注意 [掌握] 1.分类的作用 作用:讲一个类分为多个模块,将相似功能的方法写在同一个模块中,方便我们后面代码的维护 "强调 1.分类中只 ...