構造使用類C語言的指令碼引擎(1)指令碼文法定義

構造使用類C語言的指令碼引擎(1)作者 :kevin_qing轉貼請註明需求:實現npc邏輯,與遊戲(伺服器)互動。例如與商人NPC對話開啟買賣物品視窗等設計:參考傳奇2伺服器端指令碼後(實現的很爛),定義指令碼規則如下:1.採用類C語言,因為熟悉C的人很多,而且C文法較嚴謹,且使用方便2.資料類型只支援int和const

C++模板來實現一個通用的記憶體池.

從最簡單的入手1.實現一個固定大小的allocator//分配固定大小記憶體塊的模板類,內部緩衝演算法自己實現了,//我用的是預分配+回收cache鏈//即分配時先檢查回收鏈有無資料,無的話每次分配n*size個塊,然後返回其中一個,直到該塊用完後繼續分配//釋放時直接加入回收鏈即可//好處是速度夠塊,但是浪費空間可能就比較大了template <size_t size> class Fix_Allocator{void* alloc(size_t size);void

c/c++ 數字轉成字串, 字串轉成數字

數字轉字串:用C++的streanstream:#include <sstream>#Include <string>string num2str(double i)...{        stringstream ss;        ss<<i;        return ss.str();} 字串轉數字:int str2num(string s) ...{           int num;        stringstream ss(s);   

c和java的一點小區別

c語言不支援函數重載,如果定義兩個同樣的函數,會報錯。eg://test.c#include <stdio.h>#include <stdlib.h>int add(int a,int b){    return a+b;}int add(int a,int b,int c){    return a+b+c;}int main(int argc,char * argv[]){    if(argc!=3 && argc != 4)    {       

C++基礎4

模版 函數模版聲明template<class T>T max(T X,T Y){  return (x>y)?x:y;} 注意:執行個體化T的各模版實參之間必須保持完全一致的類型 模版類定義template<class Type>class stack{void push(Type ch);Type pop();} 類外定義push poptemplate<class Type>void stack<Type>::push(Type ob)

C語言共用體union和枚舉類型enum

結構體變數所佔記憶體長度是各成員占的記憶體長度的總和。每個成員分別佔有其自己的記憶體單元。共用體變數所佔的記憶體長度等於最長的成員長度。 注意點:     1.共用體變數中起作用的成員時最後一次存放的成員,在存入一個新成員後原有的成員就失去作用。     2.不能把共用體變數作為函數參數,也不能使函數帶回共用體變數,但可以使用變數的指標。 枚舉類型:enum weekday{sun,mon,tue,wnd,thu,fri,sat};注意點:    

C語言宏的進階用法

文章目錄 關於...的使用錯誤的嵌套-Misnesting由操作符優先順序引起的問題-Operator Precedence Problem消除多餘的分號-Semicolon SwallowingDuplication of Side Effects  轉至

C相關筆試題或者面試題中的概念以及技巧題1

計算2進位數中1的個數,主要用到m&(m-1) 交換a,b不用中間變數,用異或:a=a^b;b=a^b;a=a^b sizeof不是函數,它是個類似宏定義的特殊關鍵字,只要是指標,大小就是4. 靜態變數時存放在全域資料區的,而sizeof計算棧中分配的大小,是不會計算在內的。sizeof(虛函數)(類)class no_virtual{public:      void fun1() const{}      int    fun2() const { return a;

C/C++ 易錯

char c[] = "hello world"   分配局部數組char* c = "hello world"   分配全域數組  全域地區的值是不能進行修改的 1 常量指標!如 int b, c; int * const a = &b; 表示a是一個常量指標它指向變數b的記憶體。但是因為是常量指標所以不能再用a指向其他變數,如 a = &c; 錯誤!可以修改指向記憶體的值,如:*a = 20; BTW 常量指標聲明的時候必須向我那樣賦初值。 2 指向常量的指標!如 int

C語言左移和右移計算的注意點

左移運算大多數情況下可以看成是乘法運算(除去高位溢出的情況),但是顯然比乘法運算快很多。注意點:如果一個位元組長的數64 (01000000)則左移兩位後值變為0 右移運算:移到右端的低位被捨棄,對無符號數,高位補0.               對於有符號數,正數還是補零,但是負數的話,符號位原來是1,則左移移入0還是1,取決於電腦系統               移入0的稱為邏輯右移,移入1的稱為算術右移 迴圈移位:假設整數問為2位元組              

C++對象記憶體結構

對簡單對象來說,記憶體結構布局很簡單,遵循以下描述:1、非待用資料成員是影響對象所佔據記憶體大小的主要因素,隨著對象的增加而增加;2、所有對象共用一份待用資料成員,用sizeof計算對象大小時不會包含待用資料成員佔據記憶體的大小;3、靜態成員函數和非靜態成員函數不影響對象記憶體的大小;4、如果對象中包含虛函數,會增加4位元組的空間用來儲存虛函數表指標。 對單繼承類,遵循如下描述:在衍生類別執行個體頭部存在一個基類執行個體,虛函數表與基類公用一個。基類的記憶體布局和簡單對象的記憶體布局一樣,衍生類

C++類的記憶體對齊

記憶體對齊。對下面的類:       class       B{              public:int m_a;                     short int m_b;                     double m_c        private:                     int m_d;              public:                     int GetValue(){ return m_c; }      

C++多態行為的不確定性

最近做一個項目,使用了一個抽象類別的線程類,使用的時候發現有時會出現調用純虛函數的情況,代碼如下:class Thread{public:Thread(int InitFlag=CREATE_SUSPENDED);~Thread();HANDLE m_ThreadHdl;private:virtual bool Execute()=0;static unsigned __stdcall threadPro( LPVOID pParam);};Thread::Thread(int

Google C++編程風格指南(一)

背景Google的開源項目大多使用C++開發。每一個C++程式員也都知道,C++具有很多強大的語言特性,但這種強大不可避免的導致它的複雜,這種複雜會使得代碼更易於出現bug、難於閱讀和維護。本指南的目的是通過詳細闡述在C++編碼時要怎樣寫、不要怎樣寫來規避其複雜性。這些規則可在允許代碼有效使用C++語言特性的同時使其易於管理。風格,也被視為可讀性,主要指稱管理C++代碼的習慣。使用術語風格有點用詞不當,因為這些習慣遠不止原始碼檔案格式這麼簡單。使代碼易於管理的方法之一是增強代碼一致性,讓別人可以

Google C++編程風格指南(二):範圍

範圍1. 命名空間(Namespaces)在.cc檔案中,提倡使用不具名的命名空間(unnamed namespaces,譯者註:不具名的命名空間就像不具名的類一樣,似乎被介紹的很少:-()。使用具名命名空間時,其名稱可基於項目或路徑名稱,不要使用using指示符。定義:命名空間將全域範圍細分為不同的、具名的範圍,可有效防止全域範圍的命名衝突。優點:命名空間提供了(可嵌套)命名軸線(name

Google C++編程風格指南(三):C++類

關於類的注意事項,總結一下:1. 不在建構函式中做太多邏輯相關的初始化; 2. 編譯器提供的預設建構函式不會對變數進行初始化,如果定義了其他建構函式,編譯器不再提供,需要編碼者自行提供預設建構函式;3. 為避免隱式轉換,需將單參數建構函式聲明為explicit;……類類是C++中基本的代碼單元,自然被廣泛使用。本節列舉了在寫一個類時要做什麼、不要做什麼。 1.

一個古老的問題:關於如何使用c++程式查看作業系統的位元(16 位 or 32位)

公司今天對我們進行技能考核,本人覺得非常無聊!裡面居然有一個可以被稱為古董的問題:如何使用c++程式查看作業系統的位元(16 位 or 32位),不能使用sizeof()函數 這個問題本身好像就是一個非常複雜的問題,程式去查看作業系統的位元,我個人覺得應該是一個很高深的問題,在Windows下應該有相應的API函數的。不知道不同版本的編譯器對是怎樣來進行處理這個問題的。我在試題上的原始碼:#include <iostream>#include

C++編程規範 5 範圍、模板和C++其他特性

5 範圍、模板和C++其他特性   5.1  範圍 原則5.1 使用名字空間進行歸類,避免符號衝突 說明:名字空間主要解決符號衝突問題。 樣本:兩個不同項目的全域範圍都有一個類 Foo, 這樣在編譯或運行時造成衝突。如果每個項目將 代碼置於不同名字空間中     namespace  project1     {        class  Foo;        //…     }     namespace  project2     {        class  Foo;       

C++ 編程規範 7 異常與錯誤處理

7 異常與錯誤處理   7.1  異常 異常是C++語言的一個強大特性,在正確使用之前需要深入瞭解,以及使用異常代碼的上下文。 原則7.1 減少不必要的異常 說明:異常對編碼技能要求更高,使用中容易出錯,首先從安全性角度考慮,盡量少用或者不用異常。 相比返回錯誤,異常的優點:  異常可以集中捕捉,錯誤偵測與演算法處理相分離,演算法邏輯更清晰;而返回錯誤在每個返回點都     要進行檢測與錯誤處理,代碼邏輯分散。

C++編程規範 2 初始化和類型轉換

2 初始化和類型轉換   2.1  聲明、定義與初始化 規則2.1 禁止用memcpy、memset初始化非POD對象 說明:POD 全稱是“Plain Old Data”,是C++ 98標準(ISO/IEC 14882, first edition, 1998-09-01)中引入的一個概念, POD類型主要包括int, char, float,double,enumeration,void,指標等原始

總頁數: 4314 1 .... 2244 2245 2246 2247 2248 .... 4314 Go to: 前往

聯繫我們

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