查看: 1107|回复: 5

osg::Node的clone函数

[复制链接]

该用户从未签到

发表于 2012-10-16 10:59:19 | 显示全部楼层 |阅读模式
一直不明白浅拷贝和直接赋值有什么区别:
osg::Node* node = new osg::Node;

osg::Node* copyNode1 = node;
osg::Node* copyNode2 = dynamic_cast<osg::Node*>(node.clone(osg::CopyOp::SHALLOW_COPY));

对他们的修改,会直接影响到node节点,
copyNode1和copyNode2有何区别?

该用户从未签到

发表于 2012-10-16 11:11:39 | 显示全部楼层
就是公用内存的问题,深拷贝就是从新分配一块内存,浅拷贝就是增加reference

该用户从未签到

 楼主| 发表于 2012-10-16 11:16:40 | 显示全部楼层
谢谢。我想问的是直接赋值和浅拷贝的区别。浅拷贝是增加引用计数,但是为什么等号的左边可以不是ref_ptr类型的?

该用户从未签到

发表于 2012-10-16 11:22:19 | 显示全部楼层
哪个左边?

该用户从未签到

 楼主| 发表于 2012-10-16 11:25:35 | 显示全部楼层
osg::Node* copyNode2 = dynamic_cast<osg::Node*>(node.clone(osg::CopyOp::SHALLOW_COPY));

copyNode2不是ref_ptr类型的啊。还有,如果node也不是ref_ptr类型的话,是不是不涉及到引用计数呢?

该用户从未签到

发表于 2012-10-19 16:03:23 | 显示全部楼层
深拷贝、浅拷贝本来就和ref_ptr没有什么关系的,是构造成员对象时候的事情
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表