Time of Update: 2018-12-07
1.揭密extern "C"extern "C"包含雙重含義,從字面上即可得到:首先,被它修飾的目標是 "extern”的;其次,被它修飾的目標是 "C”的。 首先來看一下 "extern”的含義: a.在一個檔案內,如果外部變數不在檔案的開頭定義,其有效範圍只限定在定義到檔案的結束處。如果在定義前需要引用該變數,則要在引用之前用關鍵字 "extern”
Time of Update: 2018-12-07
1.dll的優點代碼複用是提高軟體開發效率的重要途徑。一般而言,只要某部分代碼具有通用性,就可將它構造成相對獨立的功能模組並在之後的項目中重複使用。比較常見的例子是各種應用程式架構,ATL、MFC等,它們都以原始碼的形式發布。由於這種複用是“源碼層級”的,原始碼完全暴露給了程式員,因而稱之為“白盒複用”。“白盒複用”的缺點比較多,總結起來有4點。 暴露了原始碼;多份拷貝,造成儲存浪費; 容易與程式員的“普通”代碼發生命名衝突; 更新功能模組比較困難,不利於問題的模組化實現;
Time of Update: 2018-12-07
在C++程式的效能分析中,其中重要的一項就是程式的已耗用時間。雖然程式的運行速度與電腦的配置、電腦的目前狀態等有很大關係,但在相對一致的外部環境下,程式已耗用時間的長短在很大程度上是可以反映程式效率的。1.一般計時方法在ctime標頭檔中,C++提供了計時函數 clock() ,其返回資料類型為 clock_t。typedef long clock_t;clock()函數返回從“開啟程式進程”到“程式中調用clock()函數”這段時間裡,CPU時鐘計時單元(clock tick)的數目,
Time of Update: 2018-12-07
最近不斷的有朋友來Email問一些關於設計模式方面的問題,這更加堅定了我要把設計模式系列文章寫完,也有朋友要一些示意性的代碼,在我自己學習設計模式的過程中,個人認為http://www.dofactory.com/上面提供的一些例子還是不錯的。為了大家學習的方便,我整理製作了這本新版設計模式手冊[C#],算是為初學設計模式的朋友提供一點資料,希望能夠對這些朋友有所協助。手冊共有150頁左右,PDF格式,帶有書籤。包括了GOF23種經典設計模式,每一個模式都有結構圖、生活例子、意圖、適用性、示意性
Time of Update: 2018-12-07
Effective C# 原則11:選擇foreach迴圈Item 11: Prefer foreach Loops C#的foreach語句是從do,while,或者for迴圈語句變化而來的,它相對要好一些,它可以為你的任何集合產生最好的迭代代碼。它的定義依懶於.Net架構裡的集合介面,並且編譯器會為實際的集合產生最好的代碼。當你在集合上做迭代時,可用使用foreach來取代其它的迴圈結構。檢查下面的三個迴圈:int [] foo = new int[100];// Loop
Time of Update: 2018-12-07
Effective C# 原則13:用靜態建構函式初始化類的靜態成員Item 13: Initialize Static Class Members with Static Constructors
Time of Update: 2018-12-07
第三章,用C#表達你的設計Chapter 3. Expressing Designs with C#
Time of Update: 2018-12-07
第二條:為你的常量選擇readonly而不是const(譯)對於常量,C#裡有兩個不同的版本:運行時常量和編譯時間常量。因為他們有不同的表現行為,所以當你使用不當時,將會損傷程式效能或者出現錯誤。兩害相權取其輕,當我們不得不選擇一個的時候,我們寧可選擇一個運行慢一點但正確的那一個,而不是運行快一點但有錯誤的那個。基於這個理由,你應該選擇運行時常量而不是編譯時間常量(譯註:這裡隱藏的說明了編譯時間常量效率更高,但可能會有錯誤)。編譯時間常量更快更直接,但在可維護性上遠不及運行時常量。保留編譯時間常
Time of Update: 2018-12-07
很多人在C++編程中習慣使用ANSI C下的檔案類型指標FILE來執行檔案的有關操作,這難免影響C++程式的總體美觀性。另外,C++標準IO庫中提供了更為完善、易用的檔案操作方法,所以建議使用標準庫來實現檔案的輸入/輸出,培養一種好的編程習慣。1.檔案的輸入輸出檔案操作的標頭檔有:ifstream提供檔案讀取功能;ofstream提供檔案寫入功能;fstream提供檔案的讀寫功能(包括了前兩類的功能,實現對同一檔案的讀寫雙操作)。 a.定義對象 ifstream infile; /
Time of Update: 2018-12-07
好久沒有用C++了,做的不是很順手,資料類型的轉換真不如C#方便……來自:天極網下面是幾種常用資料類型的轉換:int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="女俠程佩君";char temp[200];char *buf;CString str;_variant_t v1;_bstr_t
Time of Update: 2018-12-07
Effective C# 原則8:確保0對於實值型別資料是有效Ensure That 0 Is a Valid State for Value Types.Net系統預設所有的對象初始化時都為0。這並沒有提供一個方法來預防其他程式員建立的實值型別資料的執行個體在初始化是都是0。請讓你的資料類型預設值也是0。一個特殊情況是在枚舉類型資料中。決不要建立一個不包括0在內的枚舉類型。所有的枚舉類型都是從System.ValueType派生的。枚舉類型的值是從0開始的,但你可以改變這一行為:public
Time of Update: 2018-12-07
Chapter 2. .NET Resource Management第二章:.Net資源管理一個簡單的事實:.Net應用程式是在一個託管的環境裡啟動並執行,這個環境和不同的設計器有很大的衝突,這就才有了Effective C#。極大限度上的討論這個環境的好處,須要把你對本地化環境的想法改變為.Net
Time of Update: 2018-12-07
Effective C# 原則14:使用建構函式鏈Item 14: Utilize Constructor Chaining
Time of Update: 2018-12-07
Effective C# 原則16:垃圾最小化Item 16: Minimize Garbage
Time of Update: 2018-12-07
Effective C# Item3 Prefer the is or as operators to
Time of Update: 2018-12-07
Effective C# 原則15:使用using和try/finally來做資源清理Item 15: Utilize using and TRy/finally for Resource
Time of Update: 2018-12-07
Effective C#
Time of Update: 2018-12-07
Effective C# 原則6:區別實值型別資料和參考型別資料Item 6: Distinguish Between Value Types and Reference
Time of Update: 2018-12-07
Effective C# 原則17:裝箱和拆箱的最小化Item 17: Minimize Boxing and Unboxing 實值型別是資料的容器,它們不具備多太性。另一方面就是說,.Net架構被設計成單一繼承的參考型別,System.Object,在整個繼承關係中做為根對象存在。設計這兩種類型的目的是截然不同的,.Net架構使用了裝箱與拆箱來連結兩種不同類型的資料。裝箱是把一個實值型別資料放置在一個無類型的引用對象上,從而使一個實值型別在須要時可以當成參考型別來使用。拆箱則是額外的從“箱”
Time of Update: 2018-12-07
Item 4: Use Conditional Attributes Instead of #if 原則4:用條件屬性而不是#if使用#if/#endif 塊可以在同樣源碼上產生不同的編譯(結果),大多數debug和release兩個版本。但它們決不是我們喜歡用的工具。由於#if/#endif很容易被濫用,使得編寫的代碼難於理解且更難於調試。程式語言設計者有責任提供更好的工具,用於產生在不同運行環境下的機器代碼。C#就提供了條件屬性(Conditional