Time of Update: 2018-12-04
在上一篇《[]運算子的重載和二維數組類的[][]運算子多載》中討論了[]運算子的重載以及通過兩次重載的疊加使得二維數組類可以用 a[i][j]
Time of Update: 2018-12-04
由於工作需要,自己實現了一個鏈表的封裝。僅僅實現了基本的介面,如果有特殊需要可以通過添加代碼來實現。//鏈表模板類. ///////////////////////////////////////////////////////////* Name: 鏈表模板類 Copyright: Author: Description:實現一個鏈表。*/template <typename T>class CLinkList{public: CLinkList();
Time of Update: 2018-12-04
近日在網上發現一段有趣的程式,統計一個整形變數的二進位形式裡面1的個數.這個程式不但有趣,而且還是非常有用的,比如資料通訊中的同位,就需要統計資料裡面1的個數,可見這段程式還是非常有意義的.這段程式是這樣寫的,寫的非常精妙:int bitCount(short input){ int n_ret = 0; /* 只要 input 不為0,則迴圈判斷 */ while (0 != input) { /* 如果 input & 1 == 1
Time of Update: 2018-12-04
VC自動產生的標頭檔,總會在開頭有類似下面的這兩行代碼: #if !defined(AFX_KERNAL_H__BE542093_9230_4E18_BC5F_02888C7F0C29__INCLUDED_)#define AFX_KERNAL_H__BE542093_9230_4E18_BC5F_02888C7F0C29__INCLUDED_一開始不知道是何意義,後來仔細琢磨了一下,原來它的目的是防止標頭檔被多次包含,其實光有上面兩行還不夠,標頭檔最後一行是#endif
Time of Update: 2018-12-04
碰到 unresolved external symbol ... ... 的問題,重點從以下幾方面考慮解決問題:1、是否有該引用的lib檔案沒有引用。如果是,用 #pragma comment(lib, "???.LIB"/*檔案名稱或路徑*/) 語句引用lib庫。2、是否有CPP檔案沒有添加到當前工程裡面(缺CPP檔案)? 這個問題發生的原因是連接器串連程式的時候,發現某個變數或函數在所有代碼單元(obj)裡面都找不到,而obj檔案是由CPP檔案產生的,所以一般是缺CPP或忘了聲明某個變數、
Time of Update: 2018-12-04
有一個類的對象初始化另一個對象時,系統將自動調用拷貝建構函式或預設拷貝建構函式。建構函式的特點:1、拷貝建構函式名字與類同名,並且不必制定傳回型別;2、拷貝建構函式只有一個參數,並且該參數是該類的對象的引用;3、拷貝建構函式的格式:<類名>::<拷貝建構函式名>(<類名>&<引用名>){<函數體>}4、如果一個類中沒有定義拷貝建構函式,則系統自動產生一個預設建構函式。該預設建構函式的功能是將已知對象的所有資料的值拷貝給未知對象的
Time of Update: 2018-12-04
'CFileRead.cls-----------------------------------------------------------------------------------Option Explicit'***************************************************************'讀寫檔案的類,為檔案的讀寫操作提供了封裝,用起來更方便,重用度好'這是讀檔案的類。'。2005-3-7 Last modified.'******
Time of Update: 2018-12-04
調用Invalidate()函數會觸發OnPaint()事件,如果bErase參數為FALSE,那麼OnPaint不擦除背景,也就是說,上一次和以前的OnPaint調用繪製的映像都不會清空,所以繪製的圖形是疊加的。除非每次OnPaint繪製的都是同樣的圖形,否則就會看到圖形疊加的效果。如果bErase參數為TRUE,那麼背景將被擦除,圖形不疊加,僅僅本次OnPaint繪製的圖形會顯示出來。當然由於背景被擦除的一瞬間,會是白色,所以圖形會變得閃爍。當然,以上討論都是針對不用雙緩衝的情況。對於用雙緩
Time of Update: 2018-12-04
今天寫了一個 QB0,QB1連續移位的程式。在時鐘處一直不正常。原來的問題代碼:-------------------------------------------------------------LD T33R T33, 1AB<> 0, QB0CALL ShiftQB0NOTCALL ShiftQB1----------------------------------------------------經過一翻修改,終於正常了。修改後的正常代碼:
Time of Update: 2018-12-04
http://lqweb.nease.net/cn/mycode/FileReadBlockFileWriteBlockV2.zip這個版本速度更快一些,但可讀性較差。代碼中用到一個第三方的進度條控制項,在有些電腦上可能不能運行,只要刪掉與進度條控制項相關的代碼就可以了。把這兩個類的方法和屬性整理一下,列出來,方便參考。方法 所屬的類 說明OpenBinary CFileRead/CFileWrite
Time of Update: 2018-12-04
近日用VC++編程,給一個按鈕的Click添加了訊息處理函數之後,運行程式,發現點擊按鈕之後,訊息處理函數不執行,這是為什麼呢?細細分析之後發現,原來這個按鈕的ID值和另一個按鈕的ID值重複了,查看resource.h會發現,#define IDC_BTN1 4#define IDC_OK2
Time of Update: 2018-12-04
微軟的MFC架構中的CWordArray、CByteArray等一些類提供了一套用物件導向機制封裝的數組類,使用起來非常方便,相當於VB中的變長數組,而且由於完善的封裝,免去了用標準C++的new方法分配記憶體的操作,避免了因為忘記delete記憶體而造成記憶體流失的情況發生(前提是這些類的執行個體是在棧上建立,不是在堆上建立)。由於這些類重載了[]運算子,使得我們不必非要使用蹩腳的SetAt(),GetAt()來訪問數組元素,我們完全可以象使用普通數組一樣通過方括弧[]來訪問C**Array的
Time of Update: 2018-12-04
1、VC6的classview裡面有個別類顯示不出來。退出VC,把工程目錄下的.ncb ,.opt檔案刪除,再重新編譯一次。同理,如果是classwizard裡面有個別類顯示不出來,則刪除.clw,再重新編譯一次。 如果在classview裡建立了檔案夾對類進行了劃分,為了保持這些檔案夾,先備份.opt檔案,然後刪除.ncb,.opt檔案,再開啟工程,待vc重建了.ncb
Time of Update: 2018-12-04
:http://www.codeproject.com/KB/applications/visualleakdetector.aspx如果你在使用 VC 2008 / 2010, 那麼需要下載目前最新的 2.0b , :http://vld.codeplex.com/ 或 http://download.csdn.net/source/3229600該工具的使用方法很簡單,軟體文檔裡有清晰的說明:Using Visual Leak DetectorThis section briefly
Time of Update: 2018-12-04
描述:將一定內的元素累加,accumulateFunction Computeval與所有在[start,end)範圍內的元素的和。如果二元函數f被指定了, 它會被用作執行計算和的操作。文法:#include <NUMERIC>T accumulate( input_iterator start, input_iterator end, T val );T accumulate( input_iterator start, input_iterator end, T val,
Time of Update: 2018-12-04
《如果讓我重新讀次研究生》——王泛森院士(轉載)一、研究生與大學生的區別 首先跟大家說明一下研究生和大學生的區別。大學生基本上是來接受學問、接受知識的,然而不管是對於碩士時期或是博士時期的研究而言,都應該準備要開 始製造 新的知識,我們在美國得到博士學位時都會領到看不懂的畢業認證,在一個偶然的機會下,我問了一位懂拉丁文的人,上面的內容為何?他告訴我:「裡頭寫的是恭
Time of Update: 2018-12-04
逗號分割(Comma-Separated)運算式(eastvc發表於2001-9-29 9:00:20) 逗號分割運算式繼承於C.很可能你常在For-和While-中用這種運算式,但是就這一點而言,語言的規則要遠不同於你的個人直覺.那麼就看看逗號分割運算式的用法: 一個運算式可以有多個由逗號分開的子運算式組成, 一個例子: if(++x, --y, cin.good()) /*three
Time of Update: 2018-12-04
最近在一個網站上看到了一篇文章,收集了一些經典的編程引言,特意摘了幾條比較喜歡的放在這裡。再附上自己的理解。1、過早的最佳化是萬惡之源。Premature optimization is the root of all evil!- Donald Knuth嗯。有道理,一般來說,需求變更會導致代碼變更,代碼變更會導致你做的代碼最佳化工作付諸東流。所以,往往採用 “ 先實現再最佳化 ” 的原則,不管代碼效能有多麼差,先實現功能再說,把功能拿給客戶,當客戶確認了這個功能就是他要的東西而不是什麼別的,
Time of Update: 2018-12-04
最近調試jrtplib的樣本程式example1,屢調不通, 在一籌莫展之際,突然想起,會不會是ip地址從字串向長整形轉化的時候存在問題呢。給destip強制寫入一個 7f000001
Time of Update: 2018-12-04
VC++6的CFileDialog介面樣式還比較陳舊,缺少左側邊的【我的文件】【案頭】【我的電腦】等快捷按鈕。讓它支援新的2000/XP風格的介面樣式也比較簡單,範例程式碼如下:CFileDialog fd( ... ... );fd.m_ofn.lStructSize = 88; //最關鍵就是這句,它使得開啟檔案對話方塊具有2000/XP風格fd.DoModal();上述代碼無法在windows98下運行,要想適應windows98,你必須判斷windows系統的版本。代碼如下: