Time of Update: 2018-12-07
在下列情況下,應該考慮使用Factory 方法:1.一個類無法預測它要建立的對象屬於那一個類。2.一個類用它的子類來指定所建立的對象。3.把要建立那一個類的資訊局部化的時候。簡單的原廠模式也就是有一個類負責決定在單繼承體繫結構中執行個體化那一個子類(又稱衍生類別)。Factory 方法模式(Factory Method
Time of Update: 2018-12-07
本文詳細解釋了如何在C Builder中使用全域變數。作者:yifei(尹加俊)信箱:yifei1900@163.com 如何在C Builder中使用全域變數? (1).如果我在一個公用的標頭檔中定義一個變數,在其它單元中可以直接使用它嗎?如下: //--------------------------------Globals.h---------------------------------- #ifndef GlobalsH #define GlobalsH //---
Time of Update: 2018-12-07
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;
Time of Update: 2018-12-07
5.1 實現控制項拖放操作 拖放是使用者操縱對象的常用的方法。使用者可拖動整個控制項,或將某一個控制項(如列表框或樹狀檢視)中的項拖動到另一個控制項中。 · 開始拖動操作。 · 接受被拖動的項。 · 放下項。 · 終止拖動操作。 · 通過拖動對象定製拖放操作。 · 改變拖動滑鼠指標。
Time of Update: 2018-12-07
1 在BUID時出現,BLDMAKE ERROR: Directory "/symbian/9.2/S60_3rd_FP1/EPOC32/,等 相關資訊 Carbide.c++的workspace要和SDK安裝在同一個分區下,並在工程要和相應的SDK對應 2 產生SIS檔案項目右鍵 -> properties -> carbide.c++ -> carbide build configuration -> sis builder -> add 在SIS
Time of Update: 2018-12-07
sis是打包安裝檔案(需要pkg檔案,pkg裡有要打包的檔案清單和規則)產生sis的過程是 :編譯+連結=目標檔案 --> makesis產生sis包 -->認證簽名=sisx包1.項目右鍵 -> properties -> carbide.c++ -> carbide build configuration -> sis builder -> add 在SIS Properties面板的PKG File添加
Time of Update: 2018-12-07
轉自:http://www.cnblogs.com/xiaosacao/archive/2009/01/14/1375289.html 最近學習設計模式,對於抽象工廠很是難以理解,就到網上查看一番,碰到一哥們寫的文章,比喻很貼切,也算是讓我明白了大概。下面是轉載他寫的文章。他的地址我忘了,很久了。最近整理了一下發到部落格上來。一直覺得設計模式是非常抽象的(事實上MS也是。。。),所以就想把它說的白話點兒,讓人更容易理解。 關於抽象工廠(Abstract Factory)模式,
Time of Update: 2018-12-07
四. 如何構造一個對象 我們用下面的結構來描述一個對象: typedef struct _ClassType { char* name; /*對象名,唯一*/ int object_size;/*對象大小,建立實列時分配記憶體要用到*/ int class_size; /*全部虛函數大小,如sizeof(CObjectClass)*/ void* vclass; /*虛函數指標*/ void
Time of Update: 2018-12-07
本文將帶您瞭解一些良好的和記憶體相關的編碼實踐,以將記憶體錯誤保持在控制範圍內。記憶體錯誤是 C 和 C++ 編程的禍根:它們很普遍,認識其嚴重性已有二十多年,但始終沒有徹底解決,它們可能嚴重影響應用程式,並且很少有Team Dev對其制定明確的管理計劃。但好訊息是,它們並不怎麼神秘。引言 C 和 C++ 程式中的記憶體錯誤非常有害:它們很常見,並且可能導致嚴重的後果。來自電腦應急響應小組(請參見參考資料)和供應商的許多最嚴重的資訊安全諮詢都是由簡單的記憶體錯誤造成的。自從 70
Time of Update: 2018-12-07
基本解釋 1、指標的本質是一個與地址相關的複合類型,它的值是資料存放的位置(地址);數組的本質則是一系列的變數。 2、數組名對應著(而不是指向)一塊記憶體,其地址與容量在生命期內保持不變,只有數組的內容可以改變。指標可以隨時指向任意類型的記憶體塊,它的特徵是“可變”,所以我們常用指標來操作動態記憶體。 3、當數組作為函數的參數進行傳遞時,該數組自動退化為同類型的指標。 問題:指標與數組 聽說char a[]與char *a是一致的,是不是這樣呢? 答案與分析:
Time of Update: 2018-12-07
概述 pc-lint是一個曆史悠久,功能異常強勁的靜態代碼偵查工具。它的使用曆史可以追溯到電腦編程的遠古時代(30多年以前)。經過這麼多年的發展,它不但能夠監測出許多文法邏輯上的隱患,而且也能夠有效地幫你提出許多程式在空間利用、運行效率上的改進點,在很多專業級的軟體公司,比如 microsoft, pc-lint檢查無錯誤無警告是代碼首先要過的第一關,我個人覺得,對於小公司和個人開發而言,pc-lint也非常重要,因為基於開發成本考慮,小公 司和個人往往不能拿出很多很全面的測試,這時候,pc-
Time of Update: 2018-12-07
基本解釋 const是一個C語言的關鍵字,它限定一個變數不允許被改變。使用const在一定程度上可以提高程式的健壯性,另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程式也有一些協助。 雖然這聽起來很簡單,但實際上,const的使用也是c語言中一個比較微妙的地方,微妙在何處呢?請看下面幾個問題。 問題:const變數 & 常量 為什麼我象下面的例子一樣用一個const變數來初始化數組,ANSI C的編譯器會報告一個錯誤呢? const
Time of Update: 2018-12-07
基本解釋 本節主要探討C編譯器下面兩方面的特點所引發的一系列常見的編程問題。 對C檔案進行分別編譯: C程式通常由幾個小程式(.c檔案)組成,編譯器將這幾個小程式分別編譯,然後通過連結程式將它們組合在一起形成一個目標代碼。由於編譯器每次只能編譯一個檔案,因此它不能立即檢查需要幾個源檔案配合才能發現的錯誤。 對函數的參數和傳回值建立臨時變數
Time of Update: 2018-12-07
1. 基本解釋 typedef為C語言的關鍵字,作用是為一種資料類型定義一個新名字。這裡的資料類型包括內部資料類型(int,char等)和自訂的資料類型(struct等)。 在編程中使用typedef目的一般有兩個,一個是給變數一個易記且意義明確的新名字,另一個是簡化一些比較複雜的型別宣告。 至於typedef有什麼微妙之處,請你接著看下面對幾個問題的具體闡述。2. typedef &
Time of Update: 2018-12-07
問題:記憶體使用量 有人寫了一個將整數轉換為字串的函數: char *itoa (int n){ char retbuf[20]; sprintf(retbuf, "%d", n); return retbuf;} 如果我調用這個函數:char *str5 = itoa(5),str5會是什麼結果呢? 答案分析: 答案是不確定,可以確定的是肯定不是我們想要的 “5”。
Time of Update: 2018-12-07
概述 Joel Spolsky認為,對指標的理解是一種aptitude,不是通過訓練就可以達到的。雖然如此,我還是想談一談這個C/C++語言中最強勁也是最容易出錯的要素。 鑒於指標和目前電腦記憶體結構的關聯,很多C語言比較本質的特點都孕育在其中,因此,本篇和第六、第七兩篇我都將以指標為主線,結合在實際編程中遇到的問題,來詳細談談關於指標的幾個重要方面。 指標類型的本質分析 1、指標的本質 指標的本質:一種複合的資料類型。下面我將以下面幾個作為例子進行展開分析:
Time of Update: 2018-12-07
1、概述 static
Time of Update: 2018-12-07
概述 C語言的記憶體模型基本上對應了現在von Neumann(馮·諾伊曼)電腦的實際儲存模型,很好的達到了對機器的映射,這是C/C++適合做底層開發的主要原因,另外,C語言適合做底層開發還有另外一個原因,那就是C語言對底層操作做了很多的的支援,提供了很多比較底層的功能。 下面結合問題分別進行闡述。 問題:移位操作 在運用移位操作符時,有兩個問題必須要清楚: (1)、在右移操作中,騰空位是填 0
Time of Update: 2018-12-07
上次說了一些有意思的面試題, 今天我們結著看看一些關於指標和sizeof的面試題:下面是我看到的一些面試題5、簡述 char * const p; char const *p; const char *p; 之間的區別。 首先討論: char * const p; 這裡可以知道const修飾是指標變數p;
Time of Update: 2018-12-07
1 基本解釋 extern可以置於變數或者函數前,以標示變數或者函數的定義在別的檔案中,提示編譯器遇到此變數和函數時在其他模組中尋找其定義。 另外,extern也可用來進行連結指定。 2 問題:extern 變數 在一個源檔案裡定義了一個數組:char a[6]; 在另外一個檔案裡用下列語句進行了聲明:extern char *a; 請問,這樣可以嗎? 答案與分析: 1)、不可以,程式運行時會告訴你非法訪問。原因在於,指向類型t的指標並不等價於類型t的數組。extern