Time of Update: 2018-12-06
下面是我自己對建造者模式的理解。具體我還沒在開發中應用過,這隻是對於書本的理解。建造者模式建造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。這是建造者模式的標準表達,不過看著讓人迷惑,什麼叫構建和表示的分離?一個對象使用建構函式構造之後不就固定了,只有通過它方法來改變它的屬性嗎?而且還要同樣的構建過程搞出不同的表示,怎麼可能呢?多寫幾個建構函式?其實多寫幾個建構函式,根據不同參數設定對象不同的屬性,也可以達到這樣的效果,只是這樣就非常麻煩了,每次要增加一種表示
Time of Update: 2018-12-06
建構函式:用以對類中資料成員進行初始化系統會自動產生預設建構函式(參數為空白),但是若手動定義了帶參的建構函式,會自動覆蓋預設建構函式時若需要調用預設建構函式進行執行個體化,需要手動定義一個不帶參的建構函式初始化列表:可通過初始化列表的方式對類資料成員進行初始化,如定義初始化列表:User():sId(0001),sSex(1)繼承基類時在衍生類別中調用基類的建構函式,對基類進行初始化,實際上就是初始化列表。建構函式可以只在類體內聲明,在類體外定義,且聲明時不需要初始化列表,在定義時需要給出初始
Time of Update: 2018-12-06
代碼如下View Code 1 #include <iostream> 2 #include <fstream> 3 #include <sstream> 4 5 using namespace std; 6 class Student 7 { 8 public: 9 int sId; 10 char sName[10]; 11 }; 12 13 //申明模版類 14 template <typename
Time of Update: 2018-12-06
There is a much easier way to declare a global variable. Declare it like an ordinary C-style global, outside of any @interface...@end block in some .H file:Code: extern BOOL amIaVirgin;Then define it in some .M file, but outside of any
Time of Update: 2018-12-06
成員函數的重載、覆蓋與隱藏成員函數的重載、覆蓋(override)與隱藏很容易混淆,C++程式員必須要搞清楚概念,否則錯誤將防不勝防。8.2.1 重載與覆蓋成員函數被重載的特徵:(1)相同的範圍(在同一個類中);(2)函數名字相同;(3)參數不同;(4)virtual 關鍵字可有可無。覆蓋是指衍生類別函數覆蓋基類函數,特徵是:(1)不同的範圍(分別位於衍生類別與基類);(2)函數名字相同;(3)參數相同;(4)基類函數必須有virtual 關鍵字。樣本8-2-1 中,函數Base::f(int)
Time of Update: 2018-12-06
#include <string.h> void *memset(void *dest, int c, size_t count); 將dest前面count個字元置為字元c. 返回dest的值. void *memmove(void *dest, const void *src, size_t count); 從src複製count位元組的字元到dest. 如果src和dest出現重疊, 函數會自動處理. 返回dest的值. void
Time of Update: 2018-12-06
最近學習C++,用複製建構函式,產生了一些疑問。 1 class test{ 2 private: 3 int a; 4 public: 5 test(); 6 test(const test& T){ 7 a = T.a; 8 }; 9 ~test();10 int getdate();//返回a的值,實現我就不寫了11
Time of Update: 2018-12-06
Composite組合模式主要是應對這樣的問題:一類具有“容器特徵”的對象——即他們在充當對象的同時,又是其他對象的容器的情況。在編寫時我們常常會造成:客戶代碼過多地依賴於對象容器複雜的內部實現,對象容器內部實現結構(而非抽象介面)的變化將引起客戶代碼的頻繁變化,帶來了代碼的維護性、擴充性的弊端。 GoF《設計模式》中說到:將對象組合成樹形結構以表示“部分-整體”的階層。Composite模式使得客戶對單個對象和組合對象的使用具有一致性。
Time of Update: 2018-12-06
StrategyPattern和Simple Factory的區別和用法Strategy
Time of Update: 2018-12-06
重寫和隱藏的定義:重寫:基類方法聲明為virtual(虛方法),衍生類別中使用override申明此方法的重寫.隱藏:基類方法不做申明(預設為非虛方法),在衍生類別中使用new聲明此方法的隱藏。這樣看起來似乎不是很清晰明了,換成我自己的理解就是:比如父類A,有個方法標記為virtual,a(){} 子類B繼承A,也聲明一個方法a(){} 如果B裡面的a()使用override,那麼訪問A的方法時實際上調用了B裡面聲明的方法,相當於A的方法被覆蓋了,new就不是,訪問A的a還是A裡面定義的
Time of Update: 2018-12-06
C# 屬性特徵非常有用,以下是屬性特徵的實驗性總結(c#2.0)1.屬性只在被訪問時構造,每訪問一次就構造一次。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->class MyAttribute : Attribute {public MyAttribute(string name) {this.name = name;
Time of Update: 2018-12-06
1、Obj-C代碼的副檔名為“.m”. 2、Obj-C的要包含標頭檔時,可以使用 #include 但更一般的使用 #import ( 由GCC編譯器提供),後者可以保證標頭檔只被包含一次(l類似C中的#ifdef)。 3、有關Cocoa 的架構,可參照http://www.cocoachina.com/newbie/basic/2009/0611/130.html 4、hello Objecitve-C#import
Time of Update: 2018-12-06
因為要看看Monocross的東西,用它去實現移動開發的跨平台。Monocross是利用C# .net 去做的,所以就看了下C#,C#與C++及java都蠻相似,但也有其一些獨特的東西,稍稍小結如下:1、C#是一門建立在C++和java基礎上的物件導向的跨平台語言,但與java不同的是,C#的跨平台不是依賴於JVM,而是.net framework,這是C#與java的本質差別。java編譯後形成位元組代碼,這些代碼需要在jre(java runtime
Time of Update: 2018-12-06
欲產生隨機數,主要用到兩個函數srand,rand。標頭檔為:#include <stdlib.h> 一、函數1.srandvoid srand ( unsigned int seed );用法:它需要提供一個種子,這個種子會對應一個隨機數,如果使用相同的種子後面的 rand() 函數會出現一樣的隨機數。為了防止隨機數每次重複常常使用系統時間來初始化,即使用 time函數來獲得系統時間,它的傳回值為從 00:00:00 GMT, January 1, 1970
Time of Update: 2018-12-06
%.2f float型 double型 %lf %e 科學計數法 scanf("%f" , &weight);float a =3.13e-2; 資料類型關鍵字 int long short unsigned char float double long double _Bool 一個位元組8位 int 儲存在一個字中 按照電腦位元不同,一個字有16位,32位,64位(32位) 輸出8,16進位 %o %x
Time of Update: 2018-12-06
一、strcat(str,s) 第二個參數一定為字串! "i" "is" 不能是字元 'i'
Time of Update: 2018-12-06
在上周完成的一項工作中,發現了一個當時有點困惑的問題:當編寫供VB調用的C++ DLL時,必須使用def檔案來定義匯出符號,否則VB程式將連結失敗。我們都知道使用def檔案是為了避免C++編譯器對函數進行重新命名,另一個達到相同效果的替代方式是使用extern "C"標識符。若DLL由C++、C#、Java等調用,後者可以工作得很好;然而VB不可以,即便使用了extern "C"來標識匯出函數,依然需要定義def檔案。 就在剛剛,我找到了答案,《Windows核心編程》——19.3.2
Time of Update: 2018-12-06
開始實習之後,才發現自己是多麼地菜。還有好多東西還要去學習。公司很好,還可以幫你買書。有一天隨口問了一下上司D,代碼規範上面有什麼要求。然後D在Amazon上面找到了這本書《C#編程風格(The Elements of C#
Time of Update: 2018-12-06
適配器模式適配器模式是很好理解的模式了,生活中也非常常見,什麼插頭2口轉3口,什麼USB轉PS2,這都算是適配器模式。說白了,就是如果有一些東西提供的介面你很像用,但是你手頭沒有好的介面使用它,這個就需要一個適配器,將你需要的介面轉換成你所擁有的介面。這樣的好處也是顯而易見,就是你不用改變你現在所擁有的介面,保證你在任何地方的用法都不需要修改,然後底層的實現由適配器調用需要的介面來具體實現。 常見的情境使用第三方庫的時候,第三方的庫肯定不能適用所有的系統,所以需要一個適配器來轉換。 優點1.屏蔽
Time of Update: 2018-12-06
【轉載】http://www.blogjava.net/bacoo/archive/2009/06/22/283480.html對模板特化的理解:特化整體上分為全特化和偏特化,這一點大家都沒有什麼置疑,但是細分它們各包括哪幾種狀態就很難界定了,而且很多權威的書上都不一致,管它呢,反正我們能會用各種特化就可以了。下面就談談我個人對特化的劃分和定義:所謂特化,就是將泛型的東東搞得具體化一些,從字面上來解釋,就是為已有的模板參數進行一些使其特殊化的指定,使得以前不受任何約束的模板參數,或受到特定的修飾