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. 为虚机分配指定的IP

    在新建虚机的时候,在此处指定IP,则虚机创建完成后,会使用该IP(需要在地址池范围内)

  2. hud 1241 Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  3. LINUX 论文

    https://www.kernel.org/pub/linux/kernel/people/paulmck/

  4. MySQL协议分析

    MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报  分类: 数据库(19)    目录(?)[+]   1 交互过程 MySQL客户端与 ...

  5. How to Enable Multi-Touch

    This is a frequently asked question. Multi-touch feature is available on both iOS & Android port ...

  6. prepare a mysql docker server

    @run server.. docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql @applica ...

  7. Java并发——同步容器与并发容器

    同步容器类 早期版本的JDK提供的同步容器类为Vector和Hashtable,JDK1.2 提供了Collections.synchronizedXxx等工程方法,将普通的容器继续包装.对每个共有方 ...

  8. SWFObject2.0

    PROBLEM: using % in the height and width(e.g. 100%) with the SWFObject 2.0 (or 2.1) with dynamic pub ...

  9. 编译inotify报错

    错误如下: configure: error: no acceptable C compiler found in $PATH 这是因为没有找到编译器的原因造成的 解决方法: 安装gcc [root@ ...

  10. 黑色遮罩引导蒙版 CSS实现方式

    一.微云的实现 网站有一些改动的时候,为了让用户熟知新的操作位置,往往会增加一个引导,常见的方式就是使用一个黑色的半透明蒙版,然后需要关注的区域是镂空的. 然后上周五我去微云转悠的时候,也看到了引导层 ...