Time of Update: 2018-12-03
第5條:一個實體應該只有一個緊湊的職責 單一職責原則。這個原則並不那麼容易執行,即使是STL這樣的程式庫,也一樣會犯違反該原則的錯誤。在這裡,舉了兩個違反這一原則的著名實現:realloc和stl 中的basic_string。不過,對於basic_string,我想比起MFC中的CString還是好了不少。在《Exceptional C++ style》中,對basic_string作了剖析,並且得出一個普遍的原則:盡量將函數實現為獨立的函數而不是成員函數。
Time of Update: 2018-12-03
我們首先看一個例子:using System; namespace Ch09Ex03{ class MyClass { public int val; } struct myStruct { public int val; } /// <summary> /// Class1 的摘要說明。 /// </summary> class Class1 {
Time of Update: 2018-12-03
c++的代碼真的好難看。不過這麼多人用,也應該有它的道理。被逼看看c++,學學怎麼建立對象啊,ORZfrom:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++裡,有兩種方法建立對象:方法一:ClassNameobject(param);這樣就聲明了一個ClassName類型的object對象,C++會為它分配足夠的存放對象所有成員的儲存空間。注意:為節省儲存空間,C++建立對象時僅分配用於儲存資料成員的空間,而類中定義的成員函數則
Time of Update: 2018-12-03
四、using語句 在C#中,最接近於“理想”版本的是使用using語句:private static char[] ReadSource(string filename) { FileInfo file = new FileInfo(filename); int length = (int)file.Length; char[] source = new char[length]; using (TextReader reader = file.OpenText()) {
Time of Update: 2018-12-03
常用運算式 為了能夠更好地理解如何在C#環境中使用規則表達式,我寫出一些對你來說可能有用的規則運算式,這些運算式在其他的環境中都被使用過,希望能夠對你有所協助。??? 羅馬數字string p1 = "^m*(d?c{0,3}|c[dm])" + "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$"; ?? ? string t1 = "vii"; ?? ? Match m1 = Regex.Match(t1, p1);????交換前二個單詞 string t2 =
Time of Update: 2018-12-03
多玩YY語音的面試題:C++中如何在main()函數之前執行操作? 第一反應main()函數是所有函數執行的開始。但是問題是main()函數執行之前如何執行呢? 聯想到MFC裡面的 C**App類的theApp對象,其執行順序就在main函數之前。道理相通,順理推下,能夠想到:如果在main函數之前聲明一個類的全域的對象。那麼其執行順序,根據全域對象的生存期和範圍,肯定先於main函數。樣本如下:class simpleClass{public:
Time of Update: 2018-12-03
#include <iostream>#include <vector>#include <set>using namespace std;typedef vector <int> vi;typedef pair <int, int> ii;typedef vector <ii> vii;typedef vector <vii> vvii;const int INF = 0x7FFFFFFF;// 建立一個賦權鄰
Time of Update: 2018-12-03
我們在寫程式時經常有這樣一種應用的需求:在exe可執行檔所在的目錄下進行一些與該程式相關的檔案儲存體操作。當程式運行時就修要知道可執行程式安裝在目前使用者系統中的那個目錄下。主要就是利用GetModuleFileName()這個函數去實現的。具體用法如下: [cpp] view plaincopyTCHAR exeFullPath[MAX_PATH]; // MAX_PATH在WINDEF.h中定義了,等於260 memset(exeFullPath,0,MAX_PATH);
Time of Update: 2018-12-03
許多程式設計語言中的調用函數的兩種方法是按值調用(call-by-value)和按引用調用(call-by-reference)。參數按值調用傳遞時,產生參數值副本並且傳給被調用函數,副本的改變並不影響調用者的原始變數值,這樣就可以防止意外的副作用影響開發正確,可靠的系統。按值調用的一個缺點是,如果傳遞較大的資料項目,則複製這個資料可能要佔用相當長的執行時間。 而引用調用,調用者讓被調用者函數能夠直接存取調用者的資料,並且允許被調用函數能夠修改其中的資料。引用調用對效能有利,消除了賦值大量資料
Time of Update: 2018-12-03
1.引子#define cat(x, y) x ## y那麼cat(a, b)和cat(cat(a, b), c)的結果是啥.#define str_impl(x) #x#define str(x)
Time of Update: 2018-12-03
這篇文章講C中static的用法,感覺很經典,轉自http://www.cnblogs.com/dc10101/archive/2007/08/22/865556.html在C語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。(1)先來介紹它的第一條也是最重要的一條:隱藏。當我們同時編譯多個檔案時,所有未加static首碼的全域變數和函數都具有全域可見度。為理解這句話,我舉例來說明。我們要同時編譯兩個源檔案,一個是a.c,另一個是main.c。下面是a.c的內容char a
Time of Update: 2018-12-03
一、入門:溝通一個觀念,手敲代碼。A、《C++程式設計》《C++Primer》等,學習語言基礎,手敲所有代碼,這是紮馬步,提升興趣、成就感,打下紮實的基礎,不再浮躁。B、《高品質C/C++編程指南》《華為編程規範》等,規範自己的代碼,養成對代碼的審美觀。C、有步驟有講解的百例類的書,忘記書帶的光碟片(把它貼到天花板上),敲所有的例子代碼,學會調試,瞭解VC都能幹什麼。D、也可以看看視頻,比如孫鑫老師的,看看名家怎麼編程,怎麼用MSDN,如果你也能自己重新手敲一遍代碼,你會讓我很佩服。因為視頻容易
Time of Update: 2018-12-03
C++開發 1.《C++ Primer》:全面學習C++的必備書籍2.《Thinking in C++》:瞭解C++背後的一些機制3.《深度探索C++物件模型》:深入瞭解C++,也是學習COM的必經之路Windows平台入門1.《Windows程式設計》:這本書主要講的是Windows API的使用,是Windows編程入門書籍。上冊涉及到的知識基本上就夠用了,時間不充裕的話閱讀上冊即可。 2.《Win32多線程程式設計》:Windows下多線程編程必備 3.《Windows核心編程》:W
Time of Update: 2018-12-03
1 隱式轉換。 2.顯式轉換。使用顯式類型轉換時﹐有一些限制﹕例如數值類型﹐只能在數字﹐char類型﹐enum類型之間轉換 ,不能直接把bool類型轉換成其他類型。強制轉換一個對象的類型,該對象必須與該類型相compatible,即使該對象是在一個object變數裡 但Convert則不見得,它會根據當前參數裡的類型/對象,做解析(parse)或資料轉換,譬如下面能成功 int i = Convert.ToInt32("123");
Time of Update: 2018-12-03
C#編程有幾個簡單規則,如果能夠遵守,可以使程式看起來井然~~~ 1.命名 和vb不一樣,在C#中,是否大小寫敏感的(case sensitive) 。用C#編寫的程式集(DLL)可能在VB.NET中調用(體現編程語言的互通性),如果僅使用大小寫區分不同的名稱,就必須使得其中一個名稱不能為外部訪問: 所有,在許多情況下,命名均採用Pascal命名方式(所有單詞首字母大寫);但是在以下三中情況下,使用Camel命名形式(第一個單詞首字母小寫,其他的大寫):
Time of Update: 2018-12-03
比如在一個項目中,有大量的資料結構,他們都是雙向鏈表,但又想共用一套對鏈表的操作演算法,這怎麼做到呢,C中又沒有C++中的繼承,不然我可以繼承一父(類中只有兩個指標,一個向前一個向後),而其演算法可以寫在你類中的虛函數中,供子類使用。如:class Links{public: Links* back; Links* forword; virtual Add(){ ... }; virtual Del(){ ... }; virtual Ins(){ ... };
Time of Update: 2018-12-03
在C++中,利用C++編譯器在實現虛函數調用時的某些伎倆,我們可以在類外直接調用到類的私人成員函數!!代碼如下,代碼中有詳細的說明。//hacker.cpp: C++語言的駭客行為#include <iostream>class Coo{private: int d; //特意將d放在最前面,但實際上Coo類的對象記憶體中 //在d前面還有一個指向vtable數組的指標變數
Time of Update: 2018-12-03
我們知道數組時儲存的是一系列的相關資料類型的資料,提供了強大的索引方式來獲得它的值:通過數組名,索引下標來索引在C#中同樣實現了和其他語言沒有的強大的索引功能,C#通過索引實現對類的自己的本身的成員的訪問下面看一個執行個體第一:我定義了一個User類:包括欄位,屬性,方法 class User { private string name; private string password; public string Name {
Time of Update: 2018-12-03
我們知道泛型可以儲存一個類類型的父類,因此就可以加進他的子類。這是怎麼回事,有很多人就會產生疑問。原則上是子類對象是可以賦值給父類對象的,即子類可以完全替換父類出現的地方,但是反過來父類對象不是替換子類對象的。我們把這種特性叫做裡氏替換原則(LSP).裡氏替換原則有兩個關鍵字:is和as1.is是用來檢測對象是否與給定物件類型的相容,英文意思是“是”的意思,using System;using System.Collections.Generic;using System.Linq;using
Time of Update: 2018-12-03
.c檔案下用return (*env)->NewStringUTF(env, "Hello Baina!Guang Li is coming!");.cpp檔案下用env->NewStringUTF(const char* bytes);Java通過JNI機制調用c/c++寫的native程式。c/c++開發的native程式需要遵循一定的JNI規範,下面的例子就是一個JNI函式宣告:JNIEXPORT jint JNICALL Java_jnitest_MyTest_test (