原创 JSONCPP

在遊戲開發中,經常要用到JSON格式。 1.JSON介紹 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 JSON採用完全獨立於語言的文本格式,但

原创 C++中幾種常見的單例模式寫法。

單例模式是非常常見的一種設計模式,相信很多人都不會陌生。在鋪天蓋地的代碼海洋中,單例模式的寫法有點“五花八門”。本文整理了幾種常見的單例模式寫法,與大家共勉。 一、最簡單型 class CSingleton { CSingleton*

原创 Windows同步機制

    在多線程程序設計中,不可避免地面臨着同步問題。在Win32中,有以下四種同步機制。       1、臨界區 - Critical Section     (1) 說明     多線程程序中,有些代碼是共享資源,需將這些代碼作爲臨界

原创 柔性數組成員

    在講述柔性數組成員之前,首先要介紹一下不完整類型(incomplete type)。不完整類型是這樣一種類型,它缺乏足夠的信息例如長度去描述一個完整的對象。      1、不完整類型     incomplete types (t

原创 函數指針

   一、函數指針的定義    顧名思義,函數指針指的是指向函數的指針。每一個函數都有一個入口地址,該入口地址就是函數指針所指向的地址,因而可以利用函數指針調用該函數。它的定義如下:    函數類型 (*指針名字)(函數形參表)   

原创 成員函數模板

我們知道,類裏面提供一個缺省的拷貝構造函數(copy constructor)和拷貝賦值運算符(copy assignment operator)。所謂“缺省”,就是你自己不寫出來,系統就自己爲你生成。 我們來看下面一段代碼: templ

原创 Lib與Dll

    一、Lib與Dll的比較     靜態鏈接庫即Lib,動態鏈接庫即Dll。他們都是代碼共享的方式。所謂“靜態”,就是Link的時候把Lib裏  面需要的信息抽取出來安排到exe文件中,以後運行exe文件時不再需要Lib;所謂“動

原创 RSA算法

    一、說明     RSA算法既能用於數據加密,也能用於數字簽名。其理論依據是:尋找兩個大素數容易,而將它們的乘積分解開則異常困難。在RSA算法中,包含兩對密鑰:公有密鑰對和私有密鑰對。公有密鑰對是公開的。       二、密鑰

原创 mutable關鍵字

   mutable的英文意思是“可變的、易變的”。它在C++中的作用是:被定義爲mutable的成員變量能在const成員函數中被修改。它使爲了突破const的限制而設置的。    衆所周知,如果一個成員函數不改變類的對象的狀態,通常把

原创 Chain Of Responsibility模式

    1、作用     假設存在一個請求以及多個對象。爲了使多個對象都有機會處理這個請求,將這些對象連成一條鏈,並沿着該鏈傳遞這個請求,直到有一個對象處理請求爲止。     舉一個例子。在《步步驚心》中,假如康熙皇帝在太和殿要召見馬爾泰

原创 類對象的“傳值”與“傳引用”

   "傳值"就是通過值來傳遞一個對象,這個過程需要拷貝構造函數來進行。而"傳引用"實質上就是一種指針傳遞。兩種傳遞方式在使用上存在效率問題和"切割"問題。      1、效率    而前所述,"傳值"需要調用拷貝構造函數。例如:   

原创 C++ 流的隨機訪問

    1、幾個函數     爲支持隨機訪問,IO類型維護一個“標誌”,該“標誌”能決定從何處讀或寫。     IO類型提供了兩對函數:seekg()/tellg()和seekp()/tellp()。前者有輸入流使用,後者由輸出流使用。這

原创 C++ 虛函數

    1、定義     C++語言有多態特性,而虛函數正是其表現之一。關於其定義,有以下三個要點:     (1)必須是基類的非靜態成員函數。     (2)訪問權限可以是保護型或公有型。     (3)函數前需加上關鍵字virtual

原创 C++ 關於構造函數

   每個類都有構造函數。構造函數的主要功能是給對象分配空間、對私有成員數據賦初值。一般不做賦初值以外的事情。平時遇到的構造函數有:缺省參數的構造函數、缺省的構造函數、重載構造函數、拷貝構造函數。    使用上述幾種構造函數時,應注意以下

原创 引用在成員函數中的幾種情況

先看下面一段代碼: class CRet { }; class CTest { public:  CRet Get1()  {   return m_objCRet;  }  CRet& Get2()  {   return m_objC