Time of Update: 2018-12-07
一、前言gtest提供了多種事件機制,非常方便我們在案例之前或之後做一些操作。總結一下gtest的事件一共有3種:1. 全域的,所有案例執行前後。2. TestSuite層級的,在某一批案例中第一個案例前,最後一個案例執行後。3. TestCase層級的,每個TestCase前後。二、全域事件要實現全域事件,必須寫一個類,繼承testing::Environment類,實現裡面的SetUp和TearDown方法。1. SetUp()方法在所有案例執行前執行2.
Time of Update: 2018-12-07
前段時間學習和瞭解了下Google的開源C++單元測試架構Google Test,簡稱gtest,非常的不錯。 我們原來使用的是自己實現的一套單元測試架構,在使用過程中,發現越來越多使用不便之處,而這樣不便之處,gtest恰恰很好的解決了。其實gtest本身的實現並不複雜,我們完全可以模仿gtest,不斷的完善我們的測試架構,
Time of Update: 2018-12-07
C#自訂分頁控制項3.0 C#自訂分頁控制項不知不覺也到了3.0,說明問題還是有一些,開始的時候考慮得不夠周到,第一版出來的時候,感覺還行,等自己再次看代碼的時候,發現還是有待改進。 熱烈歡迎下載使用,剖析,批評,提修改建議。我要下載C#自訂分頁控制項3.0 這篇部落格對很多人可能沒有什麼協助,若有時間,可以看看源碼,說不定對你的損失還有點小小的挽回,下一篇部落格可能會對你有所協助,這次這麼久都沒有寫部落格,是因為項目太忙了,下一篇會寫寫自己失敗的教訓,因為最近做的一個項目,60%多的代碼
Time of Update: 2018-12-07
Effective C++ 類與函數的設計和申明在看《Effective C++》這本書的過程中,我無數次的發出感歎,這他媽寫得太好了,句句一針見血,直接說到點上。所以決定把這本書的內容加上自己的理解寫成5篇部落格,我覺得不管你是否理解這些條款,都值得你先記下來。下面的索引對應的是書中的章節。18:努力讓介面完美且最小化19:區分member functions,non-member functions和friend functions三者20:避免將data
Time of Update: 2018-12-07
在看《Effective C++》這本書的過程中,我無數次的發出感歎,這他媽寫得太好了,句句一針見血,直接說到點上。所以決定把這本書的內容加上自己的理解寫成5篇部落格,我覺得不管你是否理解這些條款,都值得你先記下來。下面的索引對應的是書中的章節。 11:如果class內動態配置有記憶體,請為此class聲明一個copy
Time of Update: 2018-12-07
1:子類不要覆寫父類的非虛函數。2:子類不要覆寫從父類繼承過來的預設參數3:子類與父類之間的賦值問題 1:子類不要覆寫父類的非虛函數。為瞭解釋方便,先看一個簡單的例子。class A{ public: A(int d):data(d){ } void print() { cout<<"A print..."<<data<<endl; } virtual
Time of Update: 2018-12-07
StringBuilder竟然是基於鏈表而不是數組的集合,它不是2被的增加容量,而是新增一個StringBuilder節點,容量為int num = Math.Max(minBlockCharCount, Math.Min(this.Length,
Time of Update: 2018-12-07
今天瞭解了一下C++與Lua之間的互操作,感覺還算簡單,不像之前不瞭解時那麼神秘了。 下面是找到的很好的學習資料,不知道是不是原出處了,反正我找了一下只有cpprog裡有。 1. http://www.cppprog.com/2009/0209/62.html - 在C++中使用Lua(一)2. http://www.cppprog.com/2009/0210/63.html - 在C++中使用Lua(二)
Time of Update: 2018-12-07
C#運行時的相互關係本部落客要講述運行時類型、對象、線程棧和託管堆之間的相互關係,靜態方法、執行個體方法和虛方法的區別,以及記憶體的分配和回收。線程棧:在一個進程中可能包含多個線程,一個線程在建立的時候,會分配到一個大小1MB大小的棧,棧用於儲存方法的實參、形參以及方法內部的局部變數,棧是從高位記憶體位址向地位地址構建的,由於棧有先進後出的特點,所以先定義的變數後被回收。下面來看一個簡單的例子,讓你更瞭解線程棧由於線程棧是從高位開始分配記憶體,先分配的我就畫在上面了,在調用F1();方法時,分配
Time of Update: 2018-12-07
記憶體回收還得從根說起,就像生兒育女一樣。根:根是一個位置,存放一個指標,該指標指向託管堆中的一個對象,或是一個null
Time of Update: 2018-12-07
1:JIT(即時編譯)。一個方法在第一次調用時JIT會把改方法的IL代碼轉換成CPU指令,再次調用該方法時就只需執行對應的指令。方法第一次被調用的過程大致是:1獲得方法的IL代碼;2:分配記憶體;3:將IL代碼轉換成CPU指令存在2分配的記憶體中;4:將方法表中對應該方法的指標指向2分配的記憶體;5:跳轉到2分配的記憶體執行其中的指令,即該方法的CPU指令。 2:as的效能高於is。Is的作用是判斷當前類型與目標類型是否相容,即是否是同一類型或者目標類型是當前類型的父類型。強制類型轉換也要判斷類
Time of Update: 2018-12-07
int _tmain(int argc, _TCHAR* argv[]){char str[20],str2[20]; cout<<str<<endl; //由於分配了空間,沒有寫入資料,在輸出地時候讀沒有寫入資料的地址就回出現亂碼 for(int i=0;i<20;i++) { str[i]='a';//if(i==10)//{// str[10]='\0';//字串遇到了\0,就會結束,所以strlen(str)=10//} } str[19]=
Time of Update: 2018-12-07
C++用數組和鏈表分別實現Queue昨天寫了《C++用數組和鏈表分別實現Stack》,今天就是《C++用數組和鏈表分別實現Queue》,隊列就是先來的先被處理掉,後來的就等,直到成為先來的,實現起來感覺和棧差不多。模板好用的,功能強大,有些東東還是寫成模板的好,廢話昨天都說了,今天是不想說的,部落格園的哥們說我的部落格不符合推薦到首頁的要求,只好加幾句廢話。鏈表版template<typename T,typename container>class queue
Time of Update: 2018-12-07
C++實現二叉樹的基本操作包括 添加節點、刪除節點、前序走訪、中序遍曆、後續遍曆、層序遍曆、最大值、最小值、二叉樹的高度//Tree.h 標頭檔#include <stdio.h> class Tree{ private : //節點元素類型為結構體 struct LinkNode { int data; LinkNode *left; LinkNode *right; LinkNode(const int& dat,LinkNode
Time of Update: 2018-12-07
首先先看一段MSDN上的樣本程式:列印一個樹中所有節點名稱MSDN上遍曆樹節點的樣本程式Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
一直以為自己對多態和繼承已經比較瞭解,當遇到虛繼承的時候,發現有點犯暈,想不通了,於是在微博上向幾個大神請教,很快得到了他們的回複,高興之情無以言表。之後自己查了一些資料,結合大神的回複,在這裡做一下簡單的記錄。我的問題如下:為什麼虛繼承類的sizeof要大些啊,是因為虛繼承中,子類有指向父類的指標和指向父類的虛函數表的指標嗎,比非虛繼承多了這兩個指標? @左耳朵耗子 @簡悅雲風 @GeniusVczh @GeniusVczh:調用的時候給的this和函數實際需要的this的指標不一定是一樣的,
Time of Update: 2018-12-07
這是一個基於windows的,用C++編寫的用戶端伺服器程式,適合初學者,高手誤入.源碼必共用思路是這樣的.啟動伺服器,伺服器啟動後會建立一個子線程,用於向用戶端發送資訊.用一個死迴圈用於接收用戶端的請求,用戶端請求成功後,會將用戶端的串連儲存到一個集合中,下面會詳細介紹這個儲存用戶端串連的類.用戶端串連成功後,伺服器會建立一個子線程用於接收用戶端的資訊,用戶端同樣也會建立一個子線程接收伺服器的資訊.這樣用戶端和伺服器就能進行通訊,如果有哪一方退出,另一方對應的接收資料的線程就會自動終止.退出一
Time of Update: 2018-12-07
一、 具名引數和選擇性參數 static void Print(string enName, cnName="李飛“, int age=25){...}Print("Prime Li");Print("Prime Li", "李飛");Print("Prime Li", "李飛", 25);Print(enName:"Prime Li");Print(”Prime Li", cnName:"李飛", age:25);規則: 1. 非選擇性參數必須首先聲明。 2.
Time of Update: 2018-12-07
今早看到了《你真的瞭解a ^= (b ^= (a ^= b))嗎?》一文,文章中提到了一個有趣的運算式:a ^= (b ^= (a ^= b)); 很簡單的一個程式: 1 int a = 2; 2 int b = 9; 3 a ^= (b ^= (a ^= b)); 4 Console.WriteLine("{0}, {1}", a.ToString(), b.ToString());最後的運算結果不是預期的9,2,而是0,2。同時,還有1個運算式:
Time of Update: 2018-12-07
經典就是經典,不論多少年,經典永遠不會改變。語言,架構總有一天會過時,但是唯獨經典永遠存在。這就是研究這些經典演算法的永恒。當我這樣一個.net程式員去應聘Java, C++,