Time of Update: 2017-02-27
首先看一看視窗的MouseDown事件的聲明 void __fastcall TForm1::FormMouseDown(TObject *Sender,TMouseButton Button,TShiftState Shift,int X,int Y)其中的Shift參數被說明為TShiftState類型: enum Classes_1{ssShift,ssAlt,ssCtrl,ssRight,ssMiddle,ssDouble}; typedef
Time of Update: 2017-02-27
自訂類的賦值運算子多載函數的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與解構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子多載函數,那麼系統將會自動提供一個賦值運算子多載函數。賦值運算子多載函數的定義與其它運算子多載函數的定義是差不多的。下面我們以執行個體說明如何使用它,代碼如下://程式作者:管寧//網站:www.cndev-lab.com//所有稿件均有著作權,如要轉載,請務必著名出處和作者#include
Time of Update: 2017-02-27
為什麼需要轉換運算子?大家知道對於內建類型的資料我們可以通過強制轉換符的使用來轉換資料,例如(int)2.1f;自訂類也是類型,那麼自訂類的對象在很多情況下也需要支援此操作,C++提供了轉換運算子多載函數,它使得自訂類對象的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下:operator 類名();轉換運算子的重載函數是沒有傳回型別的,它和類的建構函式,解構函式一樣是不遵循函數有傳回型別的規定的,他們都沒有傳回值。下面我看一個例子,看看它是如何工作的://例1//程式作者:管寧//網站:
Time of Update: 2017-02-27
現在我們已經解決了原始的書店問題了:我們必須讀取銷售記錄檔案並產生一個報告,顯示出每本書的總共收入、平均售價和銷售數量。練習24:編寫一個程式來讀取幾個事務記錄。對於每個新讀取的事務記錄,檢測它的ISBN是否與前面的相同,計算每個ISBN有多少個事務記錄。通過給出幾條事務記錄來測試這個程式。這些事務應該有多個ISBN,但是每個ISBN的記錄應該集合在一起。我們假設某個給定的ISBN的所有事務記錄是在一起出現的。我們的程式將把每個ISBN的資料群組合到Sales_item對象total中。我們從標
Time of Update: 2017-02-27
簡介本文將示範在基於Windows Vista的普通Windows應用程式及對話方塊程式中,如何利用C++來產生Aero毛半透明效果,此處使用的是Beta 2版本的Vista及Windows SDK,也許在後續的版本中,一些API在細節上會有所變化。另外,文中沒有使用MFC,全部例子用WTL 7.5產生,其可在http://wtl.sourceforge.net/下載得到,雖然此處使用的是Visual C++ 2003,但Visual C++
Time of Update: 2017-02-27
毫無疑問,異常規格是一個令人信服的特性。它使得代碼更容易理解,因為它明確地描述了一個函數可以拋出什麼樣的異常。但是它不只是一個有趣的注釋。編譯器在編譯時間有時能夠檢測到異常規格的不一致。而且如果一個函數拋出一個不在異常規格範圍裡的異常,系統在運行時能夠檢測出這個錯誤,然後一個特殊函數unexpected將被自動地調用。異常規格既可以做為一個指導性文檔同時也是異常使用的強制限制式機制,它好像有著很誘人的外表。不過在通常情況下,美貌只是一層皮,外表的美麗並不代表其內在的素質。函數unexpected
Time of Update: 2017-02-27
樹因為現實世界中存在這“樹”這種結構——族譜、等級制度、目錄分類等等,而為了研究這類問題,必須能夠將樹儲存,而如何儲存將取決於所需要的操作。這裡有個問題,是否允許存在空樹。有些書認為樹都是非空的,因為樹表示的是一種現實結構,而0不是自然數;我用過的教科書都是說可以有空樹,當然是為了和二叉樹統一。這個沒有什麼原則上的差別,反正就是一種習慣。二叉樹二叉樹可以說是人們假想的一個模型,因此,允許有空的二叉樹是無爭議的。二叉樹是有序的,左邊有一個孩子和右邊有
Time of Update: 2017-02-27
C#語言有很多值得學習的地方,這裡我們主要介紹C#利用sharpziplib,包括介紹壓縮和解壓縮的兩個類,分別為 ZipClass和UnZipClass等方面。在做項目的時候需要將檔案進行壓縮和解壓縮,於是就從http://www.icsharpcode.net下載了關於壓縮和解壓縮的源碼,但是下載下來後,面對這麼多的代碼,一時不知如何下手。只好耐下心來,慢慢的研究,總算找到了門路。針對自己的需要改寫了檔案壓縮和解壓縮的兩個類,分別為
Time of Update: 2017-02-27
System.Collections命名空間下的BitArray相當於一個bool類型的數組bool[]。MSDN用 BitArray做例子實現了一個索引器,今天研究了一下這個例子,對原來的實現做了一些改變 ,將>> 5操作變成了mod 32,敝人以為這樣看起來會更直觀。代碼如下:public class MyBitArray { private int[] m_Bits; private int m_Length; public MyBitArray(int
Time of Update: 2017-02-27
主表單中還定義了諸如Function_New,Function_Open,Function_Save等等函數用於實現 對文檔的建立、開啟檔案和儲存檔案等處理。而工具條上的按鈕就是調用這些功能函數。定 義這些功能函數的代碼如下/// <summary>/// 執行建立文檔 /// </summary>public bool Function_New(){
Time of Update: 2017-02-27
指令碼的原理指令碼,也可稱為宏,是一種應用系統二次開發的技術,它能在應用系 統提供的一個容器環境中運行某種程式設計語言,這種程式設計語言代碼調用應用系統提供的編程接 口,使得應用系統暫時“靈魂附體”,無需使用者幹預作而執行一些自動的操作, 此時應用系統稱為“宿主”。指令碼也採用多種程式設計語言,比如JavaScript 語言,VBScript語言或者其他的,若採用VB則稱為VB指令碼。下圖為指令碼原理圖下圖為常 規編程開發軟體的原理圖
Time of Update: 2017-02-27
在WinForm.NET開發中,可以使用一個Panel或UserControl作為一個帶捲軸的容器放置 圖形或其他控制項。我們可以設定控制項的BackgroundImage屬性來設定控制項的背景圖片,但這個 背景圖片是會隨著控制項內容的滾動而滾動的,而且還出現背景破碎的不良效果。現筆者在開 發實踐中遇到控制項的背景圖片不隨著控制項的滾動而滾動。在B/S開發中,開發人員可以
Time of Update: 2017-02-27
類似的對於“停止服務”,其點擊事件處理為private void btnStopService_Click(object sender, EventArgs e){ if (bolServiceInstalled == false) return; using (System.ServiceProcess.ServiceController control = new
Time of Update: 2017-02-27
Windows Service概念介紹Windows Service,也稱Windows服務,是32位Windows 作業系統中一種長期啟動並執行背景程式。它們長期後台運行,沒有使用者介面,默默無聞,但它 們卻是支援Windows正常啟動並執行幕後英雄,卻永無出頭之日。Windows服務程式為其他 系統模組提供了非常重要的服務,而且各個Windows服務分工明確,比如IISAdmin服務提供 WEB內容的發布功能,若IISAdmin服務不啟動,則靜態HTML頁面、ASP、ASP.NET或者
Time of Update: 2017-02-27
為了驗證前面提到過的類型動態轉換(即dynamic_cast轉換),以及物件類型的強制轉換。我們利用前面定義的C041、C042及C082類來進行驗證。運行下列代碼:c082.C041::c_ = 0x05;PRINT_VTABLE_ITEM(c041, 0, 0)PRINT_DETAIL(C041, ((C041)c082))PRINT_VTABLE_ITEM(((C041)c082), 0, 0)PRINT_VTABLE_ITEM(c082, 5, 0)C042 * pt =
Time of Update: 2017-02-27
smart pointers(智能指標)是行為很像指標但是增加了指標沒有提供的功能的 objects。例如,《C++箴言:使用對象管理資源》闡述了標準 auto_ptr 和 tr1::shared_ptr 是怎樣被應用於在恰當的時間自動刪除的 heap-based resources(基於堆的資源)的。STL containers 內的 iterators(迭代器)幾乎始終是 smart pointers(智能指標);你絕對不能指望用 "++" 將一個 built-in
Time of Update: 2017-02-27
《C++箴言:聲明為非成員函數的時機》闡述了為什麼只有 non-member functions(非成員函數)適合於應用到所有 arguments(實參)的 implicit type conversions(隱式類型轉換),而且它還作為一個樣本使用了一個 Rational class 的 operator* function。我建議你在閱讀本文之前先熟悉那個樣本,因為本文進行了針對《C++箴言:聲明為非成員函數的時機》中的樣本做了一個無傷大雅(模板化 Rational 和 operator*)
Time of Update: 2017-02-27
如果設計一個伺服器程式,每當處理使用者請求時,都開始一個線程,將會在一 定程式上消耗伺服器的資源。為此,一個最好的解決方案就是在伺服器啟動之前 ,事先建立一些線程對象,然後,當處理用戶端請求時,就從這些建好的線程中 獲得線程對象,並處理請求。儲存這些線程對象的結構就叫做線程池。在C#中可以通過System.Threading.ThreadPool類來實現,在預設情況下, ThreadPool最大可建立500個背景工作執行緒和1000個I/O線程(根據機器CPU個數和.net
Time of Update: 2017-02-27
開發語言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下內容:1. BeginInvoke和EndInvoke方法2.
Time of Update: 2017-02-27
RSA演算法是第一個能同時用於加密和數位簽章的演算法,也易於理解和操作。 RSA是被研究得最廣泛的公開金鑰演算法,從提出到現在已近二十年,經曆了各種攻擊的 考驗,逐漸為人們接受,普遍認為是目前最優秀的公開金鑰方案之一。RSA的安全性依 賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價 。RSA的安全性依賴於大數分解。公開金鑰和私密金鑰都是兩個大素數( 大於 100 個十進位位)的函數。據猜測,從一個密鑰和密文推斷出明文的難度等同於分解