Time of Update: 2018-12-05
C++把很多細節都仍給了程式員來處理,因此,C++有更多的注意事項,和一條條的決竅、技巧。 *
Time of Update: 2018-12-05
Linux在終端出輸出顏色 #include <stdio.h>; int main (int argc, char **argv) { printf ("\033[31mThe color of this line is red, %s!\033[0m", "ha ha"); } 格式:
Time of Update: 2018-12-05
註:路徑為:/home/xxx/工具為:apxs架構搭建: 1、準備工作:安裝apache對應的httpd-devel,主要是為了安裝apxs。 2、產生一個apache的模組架構:cd /home/xxx/; apache module:apxs -g -n mytest這裡的mytest就是apache模組的名字,但是實際產生的so名為:mod_mytest.so 3、編譯apache模組:使用c++語言編寫apache模組,網上有說使用extern"C"的方法(見http://hi.
Time of Update: 2018-12-05
C(和C++)中的宏(Macro)屬於編譯器預先處理的範疇,屬於編譯期概念(而非運行期概念)。下面對常遇到的宏的使用問題做了簡單總結。關於#和##在C語言的宏中,#的功能是將其後面的宏參數進行字串化操作(Stringfication),簡單說就是在對它所引用的宏變數通過替換後在其左右各加上一個雙引號。比如下面代碼中的宏:#define WARN_IF(EXP) \ do{ if (EXP) \ fprintf(stderr, "Warning: "
Time of Update: 2018-12-05
1、inline函數的定義要和聲明在同一個檔案中,不管它是在類內定義還是在類外定義。2、帶預設參數的成員函數,預設參數的值若在函式宣告時指定了,則在函數定義時不要指定,否則編譯報錯:重定義預設參數。3、關於const: 1)類的常資料成員的初始化只能通過建構函式的參數初始化表完成,不能在建構函式體中賦值; 2)const對象的所有資料成員都是const的,但成員函數不一定;const對象只能調用const成員函數,不能調用非const成員函數;
Time of Update: 2018-12-05
第一部分 基礎語言[第2章 變數和基本類型] C++內建類型包括bool、char、wchar_t、short、int、long int、float、double、long double,C++標準定義了每種內建類型至少應該佔用的位元,具體佔用多少位元由每個編譯器自己決定,在VC++2008中,每個類型佔用的位元組數分別為:1、1、2、2、4、4、4、8、8。 超過範圍的數賦值給unsigned類型時,得到的值是這個數與這個unsigned類型變數最大數的模的結果,比如unsigned
Time of Update: 2018-12-05
第二部分 容器和演算法 [第9章 順序容器] 三種順序容器:vector、list、deque。三種順序容器適配器:stack、queue、priority_queue。 容器容納特定類型對象的集合,所有容器都是類模板。容器只定義了少量操作,大多數額外操作都由演算法庫提供。 順序容器的元素排列順序與元素值無關,而由元素添加到容器中的順序決定。 容器元素類型必須滿足兩個要求:元素類型支援賦值運算、元素類型的對象可複製。
Time of Update: 2018-12-05
lua與C/C++互動,主要靠lua API和向lua註冊好的函數。如註:LuaGlue就是讓Lua指令碼中可調用的C++函數的介面。即那些註冊的函數。這裡起關鍵作用的要數lua_State的結構,這就得講一下Lua環境和Lua
Time of Update: 2018-12-05
其實知道《Effective C++》條款03很久了,但一直都很少用到const。用const是一件很奇妙的事,因為編譯器會幫你說出很多事。對提高程式的健壯性有很大的協助。const 實際上改變了類型,它限制了對象能夠使用的方式。1、定義常量(1)const修飾變數,以下兩種定義形式在本質上是一樣的。它的含義是:const修飾的類型的變數是不可變的。int const var;const int var;2、指標使用CONST(1)指標本身是常量不可變 char *const pVar;
Time of Update: 2018-12-05
第三部分 類和資料抽象[第12章 類] 類背後蘊含的基本思想是資料抽象和封裝。 若一個函數為const,則函數的聲明和定義部分均需指明const,否則將編譯出錯。 在類內部定義的函數預設為inline。inline函數的定義必須在調用該函數的每個源檔案中是可見的,因此若在類外定義inline函數,則該函數的定義必須和類的聲明放在同一個檔案中。一個函數為inline,這個函數的聲明和定義部分只需要出現一次inline指定即可,不需要像const那樣聲明和定義均需指定。
Time of Update: 2018-12-05
第四部分 物件導向編程與泛型程式設計 [第15章 物件導向編程] virtual的目的是啟用動態綁定,除了建構函式和static成員函數之外,其他成員函數均可以是虛函數。virtual只能出現在類的聲明處,不能出現在類外的定義處。 基類必須是已經定義的類,如果對一個類只進行了聲明而沒有定義,則這個類不能作為基函數。因為衍生類別必須知道基函數的成員都有哪些。這個規則暗示著不能從類自身派生出一個類。
Time of Update: 2018-12-05
第五部分 進階主題 [第17章 用於大型程式的工具] 通過異常我們可以將問題的檢測和問題的解決分離。由問題檢測部分拋出一個對象給處理代碼,通過這個對象的類型和內容,兩個部分能夠就出現了什麼錯誤進行通訊。 異常以類似於將實參傳遞給函數的方式拋出和捕獲。異常可以是可傳給非引用形參的任意類型的對象,這意味著必須能夠複製該類型的對象。 當拋出一個運算式的時候,被拋出對象的靜態編譯時間類型將決定異常對象的類型。
Time of Update: 2018-12-05
標準庫的string類提供了3個成員函數來從一個string得到c類型的字元數組:c_str()、data()、copy(p,n)。1. c_str():產生一個const char*指標,指向以Null 字元終止的數組。註:①這個數組的資料是臨時的,當有一個改變這些資料的成員函數被調用後,其中的資料就會失效。因此要麼現用先轉換,要麼把它的資料複製到使用者自己可以管理的記憶體中。注意。看下例: constchar* c;string s="1234";c = s.c_str();
Time of Update: 2018-12-05
1、 聲明外部變數 現代編譯器一般採用按檔案編譯的方式,因此在編譯時間,各個檔案中定義的全域變數是 互相透明的,也就是說,在編譯時間,全域變數的可見域限制在檔案內部。下面舉一個簡單的例子。建立一個工程,裡面含有A.cpp和B.cpp兩個簡單的C++源檔案: //A.cpp int i; void main() { } //B.cpp int
Time of Update: 2018-12-05
“Pointer” is very important for programming Language, its usage is very freely. So pointer brings some insecurity factors to software’s development. For this reason, the conception of pointer is being canceled in JAVA programming language (but it
Time of Update: 2018-12-05
書寫和列印64位整數long long ll = 123456789123456789LL;printf("%lld/n", ll); #include <sys/fcntl.h>1. #include <*.h> 是ANSI C的寫法2. fcntl.h 在 sys下3. 檔案IO函數及其Constent 定義都在fcntl.h中 * Emacs 並不像自已想象的那麼壞. perror 位於stdio.h中,它用於協助使用者以字串的形式輸出系統錯誤 f*
Time of Update: 2018-12-05
我是學C語言直接到C#的。現在不得不轉後學習C++。個人覺得C++學習關於它記憶體配置的問題是入門的關鍵。下面我用一個簡單的類研究C++的記憶體配置情況。//測試 類的定義class test{public: test(){cout << "預設" << endl;}; test(int a); int a; ~test();};test::test(int a){ cout << "帶參數" << endl;
Time of Update: 2018-12-05
宏只是手段?!BEGIN_MESSAGE_MAP(CMyView,CView)ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)END_MESSAGE_MAP()以上程式還是C++嗎?如果這樣使用宏,還不如專門開發一個語言叫C Macro Macro來進行windows開發! 引用孟岩信中的一句話:用C++來對Win32建模始終讓人感覺有點彆扭。本質上是因為C++的物件模型與Windows物件模型存在比較大的差別。比如說,Windows視窗可以接受任何新定義
Time of Update: 2018-12-05
安全性每次寫C++的文章,總免不了要批判一下C++。這篇文章也不例外。通過上面的講述,相信我們對虛函數表有一個比較細緻的瞭解了。水可載舟,亦可覆舟。下面,讓我們來看看我們可以用虛函數表來幹點什麼壞事吧。一、通過父類型的指標訪問子類自己的虛函數我們知道,子類沒有重載父類的虛函數是一件毫無意義的事情。因為多態也是要基於函數重載的。雖然在上面的圖中我們可以看到Base1的虛表中有Derive的虛函數,但我們根本不可能使用下面的語句來調用子類的自有虛函數:以下是引用片段: Base1 *b1 = ne
Time of Update: 2018-12-05
一、三個概念:(1)UTC/GMT:Coorainated Universal Time:它是一個標準,最主要的世界時間標準,其以原子時秒長為基礎,在時刻上盡量接近于格林尼治平時,也即格林威治標準時間(Greenwich Mean Time,GMT),在大多數場合,UTC與GMT等同(只是GMT不再由科學界精確定義)。注:為描述方便,本文中將UTC與GMT等同。(2)Local time:指相對於UTC/GMT時間的本地時間(時區轉換)。比如,中國內地的時間與UTC的時差為+8,也就是UTC+8