博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
游戏开发tips之RTTI(1)
阅读量:5760 次
发布时间:2019-06-18

本文共 892 字,大约阅读时间需要 2 分钟。

首先说明标题的含义,怎么感觉就和定义一种语言一样,需要有一个规约呢。。。。。

标题定义如下:游戏开发tip之+内容+(总tips的第几篇)

扩展如下:内容(一,二,三.....)

新手可怜,大神每一句话也许都藏着干货,但是新手总是不能立马明白(立马理解和明白的话,估计就上升为和大神一样的级别了吧)。废话少说,开始正文。

大神说,一个好的游戏引擎应该提供一个好的RTTI。当然,游戏引擎可以自己实现。游戏引擎也可以不实现自己的RTTI,此时需要开发者自己写一套RTTI。

为什么呢?

为什么不用C++自己提供的RTTI呢?因为,无论C++提供的哪种转换,都特别耗费资源。

想到现在项目里,前人写的字段getType()。根据这个type可以判断出来是处于哪一个子类。当时还特别不明白,心想这不是多此一举么?一个dynamic_cast就能搞定的事情,还非要麻烦到需要去给type进行赋值。

此时,明白了这种处理方法,可惜有点晚了。为嘛晚了。。。。这个。。。还是不说了。。。。

在网上搜了一下自己实现RTTI功能的帖子,帖子里也如是说:

运行时的动态类型检查(RTTI,Run Time Type Indentifiation)是c++中提供的一项语言机制,它主要用于判断多态对象的具体类型。 

    为什么不使用c++提供的RTTI功能 
    但c++中直接提供的RTTI存在一些缺点。首先它提供了取得类名(typeinfo中的name函数)的功能,这个功能实际上并不是RTTI必须的。很多时候我们不需要取得类的名字,而只是希望判断某对象的具体类型。而且typeinfo取得的名字还不一定是可移植的,不同编译器取得的类型名字不一定一样。 
    其次,在大多数情况下如果打开RTTI,一般来说程序中的所有多态类都会附加上RTTI信息的开销,而我们常常只需要选择其中某些类具有RTTI的功能就可以了。 
    总的来说,c++语言提供的RTTI与编译器相关,并不是可控的。因此我们有必要自己实现一份RTTI。 ”

看不太懂上段文字说的啥,记一个tip吧。

原文链接为:

为了防止博主将博文处理,本博也只好重贴一遍:

转载地址:http://mxlkx.baihongyu.com/

你可能感兴趣的文章
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
php图片赋值,php如何优雅地赋值
查看>>
Failed to connect to remote VM. Connection refused. Connection refused: connect
查看>>
OracleLinux安装说明
查看>>
nova分析(7)—— nova-scheduler
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
Java 重载、重写、构造函数详解
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
MAVEN 属性定义与使用
查看>>
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>