cocos2d-x系列筆記技巧篇(2)—關於CREATE_FUNC宏的用法

來源:互聯網
上載者:User

閱讀cocos2d-x demo的代碼,我們會看到有些標頭檔中使用CREATE_FUNC這個宏,那麼它是做什麼的呢?在cocos2d-x 又是起什麼作用呢?下面我們就一起來看看CREATE_FUNC宏的原始碼:

[cpp] view
plaincopy

  1. /** 
  2.  * define a create function for a specific type, such as CCLayer 
  3.  * @__TYPE__ class type to add create(), such as CCLayer 
  4.  */  
  5. #define CREATE_FUNC(__TYPE__) \  
  6. static __TYPE__* create() \  
  7. { \  
  8.     __TYPE__ *pRet = new __TYPE__(); \  
  9.     if (pRet && pRet->init()) \  
  10.     { \  
  11.         pRet->autorelease(); \  
  12.         return pRet; \  
  13.     } \  
  14.     else \  
  15.     { \  
  16.         delete pRet; \  
  17.         pRet = NULL; \  
  18.         return NULL; \  
  19.     } \  
  20. }  

注釋中寫的很明確,為一個類似CCLayer類的特定的類增加一個create函數.我們也可以看到在宏的下面定義了一個create()函數返回的類型就是宏帶入的參數__TYPE__指標類型.那create函數裡做了什麼呢?它執行了類的建構函式,執行了init()初始化函數,最後又設定建立出的對象為自動釋放記憶體.這樣其他人在使用這個類的時候,只要是用create()函數建立出來的對象就不用費心去管理釋放記憶體了.這個宏是不是很好用?


轉帖:http://blog.csdn.net/jinciyulang/article/details/8631889

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.