遊戲開發tips之RTTI(1)

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   io   strong   html   

首先說明標題的含義,怎麼感覺就和定義一種語言一樣,需要有一個規約呢。。。。。

標題定義如下:遊戲開發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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.