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#類在什麼時候分配記憶體 一直以為記憶體配置是在調用建構函式的時候。現在發現我錯了。 昨天在看C++的賦值運算時,想做一下筆記。一個類賦值給另一個類時,先調用建構函式,在給成員變數一個個賦值,靜態成員變數不用賦值,因為靜態成員變數屬於類,被類的所有執行個體共用,所以不用被賦值,方法屬於類,不用被賦值,也賦不了值。 突然想到調用靜態屬性或方法時不需要調用建構函式,因為調用建構函式只是產生一個新的執行個體,靜態屬性或方法屬於類嗎,調用它們根本不用產生執行個體,我突然想尖叫,
Time of Update: 2018-12-07
C#自訂分頁控制項3.0 C#自訂分頁控制項不知不覺也到了3.0,說明問題還是有一些,開始的時候考慮得不夠周到,第一版出來的時候,感覺還行,等自己再次看代碼的時候,發現還是有待改進。 熱烈歡迎下載使用,剖析,批評,提修改建議。我要下載C#自訂分頁控制項3.0 這篇部落格對很多人可能沒有什麼協助,若有時間,可以看看源碼,說不定對你的損失還有點小小的挽回,下一篇部落格可能會對你有所協助,這次這麼久都沒有寫部落格,是因為項目太忙了,下一篇會寫寫自己失敗的教訓,因為最近做的一個項目,60%多的代碼
Time of Update: 2018-12-07
C#方法1:執行個體構造器和類2:執行個體構造器和結構3:類型構造器4:操作符重載方法5:轉換操作符方法6:擴充方法 7:部分方法 這篇部落格的內容基本上是CLR via C#中第八章
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#運行時的相互關係本部落客要講述運行時類型、對象、線程棧和託管堆之間的相互關係,靜態方法、執行個體方法和虛方法的區別,以及記憶體的分配和回收。線程棧:在一個進程中可能包含多個線程,一個線程在建立的時候,會分配到一個大小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
作者:陳太漢 是的。我們討厭產生臨時變數,因為它要佔用我們的記憶體,消耗我們的CPU時間,讓我們的程式效能降低。但有時候它是必須的。 那討厭的臨時變數什麼時候產生呢?產生臨時變數的三種情況:一:以By Value的方式傳值;二:參數為const的類型。三:類型轉換一:以By Value的方式傳值。 我們都知道,參考型別和指標類型傳遞的都是地址,可以直接對地址中存放的資料進行操作, 而以傳值的方式傳遞參數,就會在heap中重新分配一個臨時地區,
Time of Update: 2018-12-07
C#學習筆記(一):C#與C++文法的一些不同 1,C#中沒有了"::"的網域作業符,全部用了"."了。但是繼承還是用的":",C#的"::"是用作命名空間別名的修飾符。 2,在C#中變數使用前必須初始化,程式員顯式的或者編譯器自動的。其中:變數是類或者結構中的欄位,如果沒有顯式初始化,則在預設建立這些變數的時候其值就是0。然而方法的局部變數必須在代碼 中顯式初始化。(這與C++中不同)。 3,例如對於下面語句:SomeType
Time of Update: 2018-12-07
關於C#中的自訂事件產生:目標:通過一個執行個體來按步驟說明C#中如何建立,引發,接收和取消事件。例子是一個表單程式,一個按鈕和一個標籤,點擊按鈕的時候就觸發一個事件得到目前時間,如果秒是後30秒就輸出一個Wasn't a right time!!一,建立一個事件類型:1,建立一個表單應用程式,添加一個button和lebelInfo,name分別為buttonRaise和labelInfo。2,定義一個委託:在表單類的聲明部分添加,public delegate void
Time of Update: 2018-12-07
一直以為自己對多態和繼承已經比較瞭解,當遇到虛繼承的時候,發現有點犯暈,想不通了,於是在微博上向幾個大神請教,很快得到了他們的回複,高興之情無以言表。之後自己查了一些資料,結合大神的回複,在這裡做一下簡單的記錄。我的問題如下:為什麼虛繼承類的sizeof要大些啊,是因為虛繼承中,子類有指向父類的指標和指向父類的虛函數表的指標嗎,比非虛繼承多了這兩個指標? @左耳朵耗子 @簡悅雲風 @GeniusVczh @GeniusVczh:調用的時候給的this和函數實際需要的this的指標不一定是一樣的,
Time of Update: 2018-12-07
上天上.Net課我穿著一件T-Shirt正面印有涅槃三個人,中間是Kurt Cobain披頭散髮,面帶微笑。老師看到我說,“喲,你衣服上印的不是寫《C#入門經典》的那幾個人嗎?”(注意:這裡的C#是一門程式設計語言,不是C調升半調....)我大窘~然後說:“這幾個是彈吉它的,估計還C#沒有入門,好像也沒有機會學了,不過他們倒是會按C#和弦。。。” 我衣服上的Nirvana~~ C#入門經典 C#進階編程顯然我們Kurt Cobain要帥很多好吧!!!其實,乍看還是有點像的。。。。