Time of Update: 2018-12-04
C++實現Reflection最近1年多,我一直在琢磨和大量使用cli來開發遊戲項目,.net系統的反射系統給我的開發設計思路,帶來了很大的衝擊。反射真的可以從根本上,讓設計思路相對傳統開發模式有很大的改變。但是反射通常都提供在類似java等動態語言上,後來ms在.net平台上推出了一個很強大完善的反射機制,我最近1年多的項目都是大量使用他,為我的項目開發,做出了很多有意思的東西。但是我的victory3d的core因為效率原因,依然是採用純C++開發,享受不到.net平台的便利。不少人在呼籲C
Time of Update: 2018-12-04
這幾天抽空把C++實現反射的代碼做了,簡單測試也沒什麼問題了,野豬建議我寫點什麼,然後和大家分享一下代碼和思路。但是我不會上傳代碼- -,好在野豬幫人幫到底,幫我上傳到了csdn的下載頻道,地址如下:http://download.csdn.net/source/399709不要看野豬亂寫的評論,這就一個粗糙的東西,希望對有興趣的人有些協助,歡迎大家討論,有時間,我會在blog上寫點東西,介紹一下我的實現思路
Time of Update: 2018-12-04
自己把順序表用C語言寫了出來,並小試牛刀,做了一題,將La與Lb合并。#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LIST_INST_SIZE 5#define LISTINCREMENT 1typedef int
Time of Update: 2018-12-04
java裡都是按值傳遞,而c++有按值傳遞,按地址傳遞(指標和引用)#include <iostream>using namespace std;void swapByPoint(int *x,int *y);void swapByRef(int &x,int &y);int main(){ int x=5,y=10; cout<<x<<":"<<y<<endl; swapByPoint(&x,
Time of Update: 2018-12-04
簡介:這是C++拷貝建構函式和賦值建構函式的詳細頁面,介紹了和c/c++,有關的知識、技巧、經驗,和一些c/c++源碼等。 重點:包含動態分配成員的類 應提供拷貝建構函式,並重載"="賦值操作符。 以下討論中將用到的例子: class CExample{public : CExample(){pBuffer=NULL; nSize=0;} ~CExample(){delete pBuffer;} void Init(int n){ pBuffer=new char [n];
Time of Update: 2018-12-04
今天學習了單鏈表,並寫出了其的C語言實現,驗證了一下感覺基本正確。但是代碼的健壯性不夠,對於有的不合法的輸入,並沒有顯示輸出錯誤。代碼可以直接貼在編譯器上編譯執行,我已經寫過主函數了。如有錯誤,歡迎指正。#include <stdio.h>#include <malloc.h> typedef struct LNode{ int data; LNode *next;}LNode, *LinkList;LinkList create() /
Time of Update: 2018-12-04
1、int sprintf( char *buffer, const char *format [, argument] ... ); <stdio.h>例如:Cpp代碼int ss; char temp[64]; string str; ss = 1000; sprintf(temp, "%d", ss); string s(temp); //調用string的方法
Time of Update: 2018-12-04
1.//整數轉換成字串itoa函數的實現 #include "stdafx.h" #include using namespace std; void itoaTest(int num,char str[] ) { int sign = num,i = 0,j = 0; char temp[11]; if(sign<0)//判斷是否是一個負數 { num = -num; }; do { temp[i] = num%10+'0'; num/=10; i++;
Time of Update: 2018-12-04
一、 簡介 ClanLib是一個主要針對遊戲開發人員的跨平台C++架構。儘管API主要為遊戲開發設計,你照樣可以容易地使用ClanLib來開發一個科學的3D視覺化檢視或多媒體應用程式(例如Gecko多媒體系統)。 ClanLib擁有各種API-2D和3D圖形,聲音,網路,I/O,輸入,GUI以及資源管理。它還提供透明的OpenGL支援,因此你可以使用本機OpenGL命令而讓ClanLib處理依賴於作業系統的視窗管理和其它一切事情。ClanLib通過DirectX或簡單的Direct
Time of Update: 2018-12-04
沒有什麼要講的。順序棧的結構體裡:頭指標,尾指標,還有棧的容量。構建棧的時候,就是尋找出一片大小合適的記憶體空間,並用結構體裡的尾指標指向這片空間。頭指標開始也是指向這片空間的。壓棧就是:先判斷空間是否足夠?不夠的話,繼續分配空間;夠的話給頭指標指向的結點賦值,並把頭結點向後移一位(也就是說頭指標始終指著的空間中data沒有任何值)。彈棧就是:首先將頭指標移回一個單位,然後將用e返回棧頂的值。#include <stdio.h> #include
Time of Update: 2018-12-04
要:本文重點討論開源遊戲開發庫Allegro(Allegro低級遊戲常式),同時涉及到一些深度技術並提供了一個簡單的樣本程式,幫你進一步確定它是否是適合你的開發平台。 一、 一個適於多環境的引擎 Allegro最開始被研發於八十年代後期古老的Atari ST平台上,隨後被快速地移植到流行的DJGPP環境(一個在九十年代早期流行的32位的MS-DOS擴充程式)。此後,Allegro被移植到最為流行的Windows C++開發環境中,包括VS,MinGW,Cygwin和Borland
Time of Update: 2018-12-04
一、狀態機器描述狀態機器理論最初的發展在數字電路設計領域。在數字電路方面,根據輸出是否與輸入訊號有關,狀態機器可以劃分為Mealy型和Moore型狀態機器;根據輸出是否與輸入訊號同步,狀態機器可以劃分為非同步和同步狀態機器。而在軟體設計領域,狀態機器設計的理論儼然已經自成一體。Moore型狀態機器的輸出只和目前狀態有關,和輸入無關,如果在軟體設計領域設計出這種類型的狀態機器,則該狀態機器接受的事件都是無內蘊資訊的事件(輸入)。Mealy型狀態機器的輸入是由目前狀態和輸入共同決定,對應到軟體設計領
Time of Update: 2018-12-04
唯寫了幾個主要的操作,銷毀,清空等沒有寫#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0#define QUEUE_SIZE 100typedef int Status;typedef int ElemType;typedef struct Qnode{ ElemType *base; int front; int rear;
Time of Update: 2018-12-04
如何使類不能被繼承 如果大家熟悉java的話應該知道java中有一種類不能被繼承,那就是final類.這種類有很多用處,尤其是在大的項目中控制類的繼承層次. 使子類數量不至於爆炸.在使用了多繼承的類層次中這也是防止出現菱形繼承階層的一個好辦法. 要實現一個不能被繼承的類有很多方法. 主要的思路就是使子類不能構造父類的部分,這樣子類就沒有辦法執行個體化整個子類.這樣就限制了子類的繼承.
Time of Update: 2018-12-04
C++程式也還是寫了不少,可惜發現真正一深入的一些東東,還是不怎麼明白,一些基礎的點,也是模模糊糊,憑猜,憑程式實踐下才知,嗯,這篇以後就一直用來記這些點嘍!0201.在C++中,重載和重定義是不一樣的,重載是指在同一類中,同一個函數名可以有不同的參數形式,這就是重 載,而重定義即是繼承後對基類函數的重新定義. 解構函式只能有一個,不可重載.0202.以new分配的空間,就算生命週期到了,也不會被刪掉,除非手動delete掉.0203.用char *name= "0object"; 表示說,
Time of Update: 2018-12-04
在寫C#TCP通訊程式時,發送資料時,只能發送byte數組,處理起來比較麻煩不說,如果是和VC6.0等寫的程式通訊的話,很多的都是傳送結構體,在VC6.0中可以很方便的把一個char[]數群組轉換為一個結構體,而在C#卻不能直接把byte數群組轉換為結構體,要在C#中發送結構體,可以按以下方法實現:1)定義結構體: //命名空間 using System.Runtime.InteropServices; //注意這個屬性不能少
Time of Update: 2018-12-04
《C++Primer》第四版 2.3.5節中這麼說到:①變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有一個定義。②變數聲明:用於向程式表明變數的類型和名字。③定義也是聲明:當定義變數時我們聲明了它的類型和名字。④extern關鍵字:通過使用extern關鍵字聲明變數名而不定義它。 1.定義也是聲明,extern聲明不是定義,即不分配儲存空間。extern告訴編譯器變數在其他地方定義了。例如:extern int i; //聲明,不是定義
Time of Update: 2018-12-04
當 operator new 不能滿足一個記憶體配置請求時,它拋出一個 exception(異常)。很久以前,他返回一個 null pointer(null 指標),而一些比較老的編譯器還在這樣做。你依然能達到以前的目的(在一定程度上),但是我要到本文的最後再討論它。 在 operator new 因回應一個無法滿足的記憶體請求而拋出一個 exception 之前,它先調用一個可以由客戶指定的被稱為 new-handler 的 error-handling
Time of Update: 2018-12-04
這是一個所有程式員都應該瞭解的小型的 C++ 詞彙表。下面的條目都足夠重要,值得我們對它們的含義務必取得完全一致。 聲明(declaration)告訴編譯器關於某物的名字和類型,但它省略了某些細節。以下這些都是聲明:extern int x; // object declarationstd::size_t numDigits(int number); // function declarationclass Widget; // class
Time of Update: 2018-12-04
在C++中偵測內嵌類型的存在(rev#2) By 劉未鵬(pongba)C++的羅浮宮(http://blog.csdn.net/pongba) 動機(Motivation)假設一所大學的註冊系統提供了一個註冊函數: template<class T>void Register(T person){Register(person, typename T::person_tag());}; 而對於註冊者有以下幾種標識: struct student_tag{};struct