Time of Update: 2018-12-04
c++中箭頭操作符(->) VS 點操作符(.)一個左邊是指標. 一個左邊是實體.如果p是指標,p->function(); 如果p是對象,p.function(); 記住-〉左邊必須是指標,.左邊必須是對象或者結構體,一般是類對象首先介紹一下C++中的結構。對於一個結構來說,struct MyStruct{ int member_a; };如果有個變數MyStruct s,那麼使用其中的成員元素時可以用s.member_a =
Time of Update: 2018-12-04
1. 什麼是類?什麼是對象?對象與類的關係是什嗎?答:類就是相同的資料和相同的一組對象的集合,即類是對具有相同資料結構和相同操作的一類對象的描述;對象是描述其屬性的資料以及對這些資料施加的一組操作封裝在一起構成的統一體,對象可以認為是:資料+操作;類和對象之間的關係是抽象和具體的關係。2. 建構函式和解構函式的主要作用是什嗎?他們各有什麼特性? 答:建構函式主要用於為對象分配空間,進行初始化。建構函式除了具有一般成員函數的特徵外,還具有一些特殊的性質:(1
Time of Update: 2018-12-04
1、進入root模式;2、選擇一個目錄,比如"練習"目錄,進入該目錄下 ; cd 練習3、建立一個C++檔案; vim pror1.cpp4、進入VIM環境,按i,開始編程; 常式如下: #include <iostream>int main(){ std::cout<<"Enter two numbers"<<std::endl; int v1, v2; std::cin >> v1 >>v2; std:
Time of Update: 2018-12-04
1//建立字串對象數組NSArray *array = [str componentsSeparatedByString:@"@"];//就是以@為標示 輸出看看啦int count=[array count];int i;for(i=0;i<count;i=i+4){printf("%i: %s\n",i,[[array objectAtIndex:i] UTF8String]);}2 可變的字串類NSMutableString *song=[[NSMutableString
Time of Update: 2018-12-04
【轉貼】goldroc的專欄在BCB中實作類別C#屬性聲明文法巧用宏命令,改造BCB——在BCB中實作類別C#屬性聲明文法引子 餘好程式,喜BCB(Borland C++ Builder)。一日見C#之屬性聲明,頓覺清爽。其後偶有所啟,遂整以條理、載以文字,且冠文章之名。於夫同好而喜BCB者,或可有益。若是,其旨達矣。背景描述——宏的曆史地位 物件導向的C++語言推出後,曾經在C中極其重要的宏命令似乎變得很少使用了。連C++大師Bjarne Stroustrup在他的經典C++教程《The
Time of Update: 2018-12-04
最近,我苦惱於研發中心程式設計語言的選擇上,JAVA還是C#??J2EE還是.Net??其實網上有關這兩個語言的選擇的文章很多,可謂仁者見仁,智者見智。其實這兩個語言或者說平台的 優缺點是顯而易見的,關鍵是哪個更能適合自己的情況。JAVA跨作業系統,現在的金融、電信、大型企業又多半運行類UNIX系統。C#明顯學習曲線好,開發週期短。我們呢??
Time of Update: 2018-12-04
轉至 http://blog.csdn.net/rnamatrix/article/details/5765462今天在使用limits中的numeric_limits類模板函數max和min時,編譯出現了一個錯誤:[c-sharp] view plaincopyprint?error C2589: '(' : illegal token on right side of '::' error C2589: '(' : illegal token on right side of
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(1)作者 :kevin_qing轉貼請註明需求:實現npc邏輯,與遊戲(伺服器)互動。例如與商人NPC對話開啟買賣物品視窗等設計:參考傳奇2伺服器端指令碼後(實現的很爛),定義指令碼規則如下:1.採用類C語言,因為熟悉C的人很多,而且C文法較嚴謹,且使用方便2.資料類型只支援int和const
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(5)作者 :kevin_qing轉貼請註明語法檢查,常量合并和產生文法樹是在reduce規約函數中實現文法樹節點定義struct GTreeNode{uint32_t type; uint32_t value;};struct GTreeNode1:public GTreeNode{GTreeNode* child1;};struct GTreeNode2:public GTreeNode1{GTreeNode* child2;};struct GTreeNode3
Time of Update: 2018-12-04
從最簡單的入手1.實現一個固定大小的allocator//分配固定大小記憶體塊的模板類,內部緩衝演算法自己實現了,//我用的是預分配+回收cache鏈//即分配時先檢查回收鏈有無資料,無的話每次分配n*size個塊,然後返回其中一個,直到該塊用完後繼續分配//釋放時直接加入回收鏈即可//好處是速度夠塊,但是浪費空間可能就比較大了template <size_t size> class Fix_Allocator{void* alloc(size_t size);void
Time of Update: 2018-12-04
數字轉字串:用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);
Time of Update: 2018-12-04
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) {
Time of Update: 2018-12-04
模版 函數模版聲明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)
Time of Update: 2018-12-04
結構體變數所佔記憶體長度是各成員占的記憶體長度的總和。每個成員分別佔有其自己的記憶體單元。共用體變數所佔的記憶體長度等於最長的成員長度。 注意點: 1.共用體變數中起作用的成員時最後一次存放的成員,在存入一個新成員後原有的成員就失去作用。 2.不能把共用體變數作為函數參數,也不能使函數帶回共用體變數,但可以使用變數的指標。 枚舉類型:enum weekday{sun,mon,tue,wnd,thu,fri,sat};注意點:
Time of Update: 2018-12-04
文章目錄 關於...的使用錯誤的嵌套-Misnesting由操作符優先順序引起的問題-Operator Precedence Problem消除多餘的分號-Semicolon SwallowingDuplication of Side Effects 轉至
Time of Update: 2018-12-04
計算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;
Time of Update: 2018-12-04
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
Time of Update: 2018-12-04
左移運算大多數情況下可以看成是乘法運算(除去高位溢出的情況),但是顯然比乘法運算快很多。注意點:如果一個位元組長的數64 (01000000)則左移兩位後值變為0 右移運算:移到右端的低位被捨棄,對無符號數,高位補0. 對於有符號數,正數還是補零,但是負數的話,符號位原來是1,則左移移入0還是1,取決於電腦系統 移入0的稱為邏輯右移,移入1的稱為算術右移 迴圈移位:假設整數問為2位元組
Time of Update: 2018-12-04
對簡單對象來說,記憶體結構布局很簡單,遵循以下描述:1、非待用資料成員是影響對象所佔據記憶體大小的主要因素,隨著對象的增加而增加;2、所有對象共用一份待用資料成員,用sizeof計算對象大小時不會包含待用資料成員佔據記憶體的大小;3、靜態成員函數和非靜態成員函數不影響對象記憶體的大小;4、如果對象中包含虛函數,會增加4位元組的空間用來儲存虛函數表指標。 對單繼承類,遵循如下描述:在衍生類別執行個體頭部存在一個基類執行個體,虛函數表與基類公用一個。基類的記憶體布局和簡單對象的記憶體布局一樣,衍生類
Time of Update: 2018-12-04
記憶體對齊。對下面的類: class B{ public:int m_a; short int m_b; double m_c private: int m_d; public: int GetValue(){ return m_c; }