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

标题定义如下:游戏开发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://m.blog.csdn.net/blog/s_51563946/4465502

为了防止博主将博文处理,本博也只好重贴一遍:http://www.cnblogs.com/slysky/p/3904227.html

游戏开发tips之RTTI(1)的更多相关文章

  1. [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

    大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...

  2. PokemonGo:LBS游戏开发

    写在前面 去吧!皮卡丘!小时候拥有一台任天堂是多少熊孩子的梦想,每个夜晚被窝里透出的微弱光线,把小小的童年带入另一个世界,家门口的鸟和狗,森林里的虫和瀑布,山洞里的超音蝠,带着小小的梦,走过一个个城市 ...

  3. Android游戏开发实践(1)之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  4. Android游戏开发实践(1)之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  5. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  6. [游戏开发-学习笔记]菜鸟慢慢飞(四)-Camera

    游戏开发中,主相机应该是最重要的GameObject之一,毕竟游戏呈现给玩家,就是通过它. 相机的使用,在不同的游戏中,有很大的不同.这里总结一下自己学到的一些相关知识. 固定位置-游戏过程中相机的T ...

  7. 项目游戏开发日记 No.0x000005

    14软二杨近星(2014551622) 还有一周就要交项目了, 看着周围的人也都忙碌了起来, 看着大部分人的项目都已经初具容貌, 我们团队里面也搞得人心惶惶, 一来是, 时间不多了, 还有很多事情要做 ...

  8. 项目游戏开发日记 No.0x000002

    14软二杨近星(2014551622) 项目开发的开始, 到现在已经很久了, 软件工程的课也上了很久了, 不过, 我们的游戏现在依然还没有影子, 只能说...还是啥也不会... 从一开始, 兴致勃勃地 ...

  9. unity游戏开发新手-----2017年展望

    0.希望三月份中旬之前找一份游戏开发的工作,必须转正; 1.希望存款3-4万; 2.今年年底结婚; 3.锻炼身体,体重保持在115斤左右,有胸肌和腹肌;(结婚之前实现) 4.技术方面: 熟练掌握C#语 ...

随机推荐

  1. client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法

    [本文源址:http://blog.csdn.net/q1056843325/article/details/54729657 转载请加入该地址] 明天就是除夕了 预祝大家新春快乐 [ ]~( ̄▽ ̄) ...

  2. oracle 插入表数据的4种方式

      1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...

  3. eclipse tomcat路径更改后启动报错

      eclipse tomcat路径更改后启动报错 CreateTime--2018年5月3日14:48:22 Author:Marydon 1.情景还原 2.原因 本地的tomcat路径修改后,ec ...

  4. eclipse 关闭web项目无用校验

      eclipse 关闭web项目无用校验 CreateTime--2018年4月8日16:21:01 Author:Marydon 1.关闭javascript校验 1.1 切换到视图Navigat ...

  5. 使用spring的@Async异步执行方法

    应用场景: 1.某些耗时较长的而用户不需要等待该方法的处理结果 2.某些耗时较长的方法,后面的程序不需要用到这个方法的处理结果时 在spring的配置文件中加入对异步执行的支持 <beans x ...

  6. s[-1]和s[len(s)-1]

    Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32 Type "copyr ...

  7. iptables阐述防火墙

    一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...

  8. Google 做过的 12 件奇葩事

    Google做了太多伟大的事情了.以至于有时它有点让人难以实时跟上它的动态.假设你对这家公司略微有点感情.看看他们做过的一些有点匪夷所思的事儿,可能认为,毕竟是大公司.还挺难以被全然理解透的. 一个Q ...

  9. ASP.NET#JavaScript中调用WebServer注意的问题

    1)要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,就要取消注销以下行:[System.Web.Script.Services.ScriptService](2)调用格式:命名空间 ...

  10. Linux 常用脚本

    Linux 常用脚本   修改表列属性   sql可任意修改,若数据库正好在执行机器上,可去掉ip地址 echo 为输出   #!/bin/shfor((i=0;i<256;i++));do   ...