Time of Update: 2018-12-04
為啥需要動態分配記憶體 數組是我們常用的一種資料結構.但它有一個缺點,就是用的時候必須確定數組大小.如果我們要用數組來儲存的資料不確定可咋整啊?把數組定得太大浪費空間,太小的話又裝不下.這是一種情況.另外就是對象太大.我們使用的資料大部分時候都預設儲存在棧(stack)裡面,由系統去管理,會自動給分配記憶體,自動給刪除掉.但是stack很小,就那麼幾M,如果你讀取一個幾十M的常值內容然後儲存到一個字串裡,stack肯定會被撐爆了.
Time of Update: 2018-12-04
最常用的序列化是把某個類序列化成二進位檔案.但有時我們也會把類序列化成xml檔案.假如有如下一個類class Arwen{private Hashtable table = new Hashtable();private TimeSpan time = new TimeSpan(0, 0, 1);public Hashtable Table{get { return table; }set { table = value; }}public TimeSpan Time{get { return
Time of Update: 2018-12-04
文章目錄 6.TODO 注釋 C++編碼規範(1):代碼注釋C++編碼規範(2):命名規範 當你閱讀別人的代碼時如果沒有注釋那會是件比較痛苦的事.一說到注釋我們馬上想到是通過//或/*
Time of Update: 2018-12-04
為啥要用模板 我們知道有很多不同的物件類型可能有相同的操作,基本類型如數實值型別的都有加減乘除,比大小啊.一個個從現實中抽象出來的類就更是具體很多共性了.如果是同一類事物可以弄個父類出來就OK,比如動物都具體的某些通用操作就搞個animal基類完事.但如果不是同一類事物,就不容易整個繼承關係出來啊.比如人有身高,可以計算體重,一塊石頭也有長寬高,可以計算體重.如果有一個計算體重的函數,大家都可以拿來用,只要傳不同的參數就行.函數重載可以實作類別似的功能,但太麻煩了點,要整蠻多個函數啊.
Time of Update: 2018-12-04
主要實現雙鏈表如下功能:void AddBack(T val); //鏈表尾部添加元素void AddFront(T val); //鏈表頭部添加元素bool InsertAt(int pos, T val); //在指定的索引處插入元素bool RemoveBack(); //尾部刪除元素bool RemoveFront(); //頭部刪除元素bool RemoveAt(int pos); //刪除指定索引處元素 bool Find(T val);
Time of Update: 2018-12-04
我們知道如果不希望改變某個變數的值就用const修飾它,讓它變為常量.基本類型和指標類型都能用const來修飾.數組也可以用const來修飾.那你自然要問我們把class執行個體化成一個對象後,如果不希望修改對象中的成員變數,讓對象變得像個常量一樣該咋整呢?你首先自然會想到把類中所有的成員變數都用const修飾不就得了.其實這確實是個辦法拉,但是如果我們只是想某個類的一個執行個體對象弄得像常量啊.你這樣用const整就真成了常量了,所有類的執行個體都只能當常量來處理了.這顯然不行拉.其實很簡單,
Time of Update: 2018-12-04
類和柏拉圖的理念世界
Time of Update: 2018-12-04
進位的故事 跟數字打交道時我們接觸的最多的是十進位了,我們從小學到大學的數學課基本上都用的十進位.但實際上還存在各種各樣的其他進位.比如時間就是60進位,中國古代用十六進位表示重量,十六兩是一斤,所以有成語半斤八兩.
Time of Update: 2018-12-04
C++編碼規範(1):代碼注釋C++編碼規範(2):命名規範 如果你代碼中的變數名,函數數,類名都取得很好,不僅是個有意義的詞或短語,而且確切的表達了該變數或函數的功能.那讀起代碼來就像看文章一樣,絕對是一種享受.當然理想是美好的,現實可是殘酷的.很少有人能做到這樣.一來嘛你英語詞彙量得多,不樣不容易找到那麼多合適並貼切的詞.二來就是有些片語合就會很長,這樣不得不用些縮寫,而縮寫就不是每個人都認識,對一些人來說和無意義的字母沒啥區別,只要你英語好才能一眼瞧出來.
Time of Update: 2018-12-04
文章目錄 強型別與弱類型語言隱式轉換新式強制類型轉換方式C#強制類型轉換 強型別與弱類型語言像C++,C,Java,C#這些主流的程式設計語言都是強型別語言.而一些指令碼語言則是弱類型的,比如vbscript , javascript.1.強型別語言簡單的理解就是當定義了一個變數之後就會指定一個固定的類型,並對應一個固定的記憶體塊大小.比如有int , double
Time of Update: 2018-12-04
文章目錄 為啥需要枚舉類型1.不需要分配記憶體的情況2.需要分配記憶體的情況枚舉類型具體用法
Time of Update: 2018-12-04
文章目錄 上面是講的概念性的東西,現在來講下文法細節C++抽象類別 物件導向的小故事
Time of Update: 2018-12-04
如果要儲存運行程式過程的資料要麼儲存到資料庫中,要麼建立一個普通的檔案,然後把資料儲存進去.但是這兩者有個缺點就是,不能把原有資料的結構也儲存進去.比如一個類中的欄位值儲存進去後再讀取出來必須再解析下才行.序列化技術讓你省去瞭解析的過程.儲存後再讀取時直接得到一個class序列化的方式有三種:BinaryFormatter,SoapFormatter,XmlSerializer1.BinaryFormatter儲存成位元據流.用法樣本:using System.IO;using
Time of Update: 2018-12-04
地球人都知道物件導向的三個主要特徵是封裝,繼承,多態.前面兩個概念顧名思義,比較容易理解,封裝就是所有的東東都給封裝到一個個的class中,並通過public,private等存取修飾詞提供一些許可權控制.繼承嘛就是子類能擁有父類的非私人的成員變數和函數,就像你能繼承你老子的財產一樣啊.多態光看名字可不好理解,可沒變態那麼通俗易懂啊.其實前面說的三個特性還有另外的版本,比如:資料抽象,繼承,動態綁定.說法不一樣但表示的意思完全一樣.
Time of Update: 2018-12-04
DES(Data Encryption
Time of Update: 2018-12-04
Time of Update: 2018-12-04
平時碰到分支條件判斷最常用的是if else語句,不過有時要是分支條件太多用switch就更直觀,方便一點.先舉兩個簡單的例子.C++:int num = 2;switch(num){case 1:cout<<"one";break;case 2:cout<<"two";break;case 3:cout<<"three";break; //break可省略default:cout<<"default";break;
Time of Update: 2018-12-04
文章目錄 2.參數預設值只能在聲明或定義中一處指定.不能同時指定.3.預設參數與函數重載的二義性問題. 預設參數在函數參數較多時是非常有用的.可以只傳必須的值,其它取預設值.使用方法如下: 1.預設參數是嚴格按照從左至右的順序使用所以只有如下使用才是合法的(1)參數全部為預設值. void Fun( int a = 1, int b = 2, int c = 3)(2)void Fun(int a , int b = 2, int c =
Time of Update: 2018-12-04
文章目錄 C++ 基礎資料型別 (Elementary Data Type)C#基礎資料型別 (Elementary Data Type) 1.類型系統簡介我們認識事務時總喜歡先分個類,然後研究每個各類的特性.在程式設計語言裡面把也會把所有基本內容分門別類.你首先想到的自然是int,long等基礎資料型別 (Elementary Data
Time of Update: 2018-12-04
下面通過C++代碼實現單鏈表的如下簡單操作viod Add(T val); //在鏈表尾部添加元素bool InsertAt(int pos, T val); //在索引為pos的位置插入元素valbool Remove(); //刪除鏈表尾部元素boo RemoveAt(int pos); //刪除任意指定索引所在元素 T GetHeadVal(); //返回鏈表頭部元素的值T GetTailVal(); //尾部元素的值int Find(T val);