Time of Update: 2017-02-27
譯者序:這是一篇寫於1996年1月23日的文章,到現在已經有9個年頭了,很陳舊,有可能跟不上形勢,但是有些東西仍然值得現在的開發人員學習,我翻譯這篇文字僅供讀者參考。原文連結:http://www.gamedev.net/reference/articles/article708.asp檔案標頭檔有".h"尾碼。標頭檔包含類(class),結構(struct),和聯合(union)的聲明,枚舉(enum)的聲明,#define,typedef。實現檔案有一個".cc
Time of Update: 2017-02-27
譯者註:本文在網上已經有幾個譯本,但都不完整,所以我決定自己把它翻譯過來。雖然力求信、雅、達,但鑒於這是我的第一次翻譯經曆,不足之處敬請諒解並指出。與傳統語言相比,C++的一項革命性創新就是它支援異常處理。傳統的錯誤處理方式經常滿足不了要求,而異常處理則是一個極好的替代解決方案。它將正常代碼和錯誤處理代碼清晰的劃分開來,程式變得非常乾淨並且容易維護。本文討論了編譯器如何?異常處理。我將假定你已經熟悉異常處理的文法和機制。本文還提供了一個用於VC++的異常處理庫,要用庫中的處理常式替換掉VC++提
Time of Update: 2017-02-27
摘要:本文概要性地介紹如何選擇正確的策略來為使用者定義型別重載 + 操作符。使用者定義的類型,如:字串,日期,複數,聯合體以及檔案常常重載二元 + 操作符以實現對象的串連,附加或合并機制。但是要正確實現 + 操作符會給設計,實現和效能帶來一定的挑戰。本文將概要性地介紹如何選擇正確的策略來為使用者定義型別重載這個操作符。考慮如下的運算式:int x=4+2;內建的 + 操作符有兩個類型相同的運算元,相加並返回右值 6,然後被賦值給 x。我們可以斷定內建的 + 是一個二元的,對稱的,可交換的操作符。
Time of Update: 2017-02-27
標準程式庫問題,再談list的迭代器是否可以隨機移動?上篇文章中的"list的迭代器是否可以隨機移動?"問題的回顧:由於list的內部實現是雙向鏈表,鏈表就要求迭代器(指標)只能依次從前向後(或從後向前)移動,依次移動一個位置,因此list只定義了++和--操作符,而沒有定義+、-、+=和-=等操作符。所以要想list的迭代器移動一段距離,就需要自己編程實現,用一個小迴圈就行了,代碼如下:#include <list>using namespace
Time of Update: 2017-02-27
簡介對於很多初學者來說,往往覺得回呼函數很神秘,很想知道回呼函數的工作原理。本文將要解釋什麼是回呼函數、它們有什麼好處、為什麼要使用它們等等問題,在開始之前,假設你已經熟知了函數指標。什麼是回呼函數?簡而言之,回呼函數就是一個通過函數指標調用的函數。如果你把函數的指標(地址)作為參數傳遞給另一個函數,當這個指標被用為調用它所指向的函數時,我們就說這是回呼函數。為什麼要使用回呼函數?因為可以把調用者與被調用者分開。調用者不關心誰是被調用者,所有它需知道的,只是存在一個具有某種特定原型、某些限制條件
Time of Update: 2017-02-27
在沒有講述本章內容之前如果我們想要在一個範圍內共用某一個資料,那麼我們會設立全域對象,但物件導向的程式是由對象構成的,我們如何才能在類範圍內共用資料呢?這個問題便是本章的重點:聲明為static的類成員或者成員函數便能在類的範圍內共同享,我們把這樣的成員稱做靜態成員和靜態成員函數。下面我們用幾個執行個體來說明這個問題,類的成員需要保護,通常情況下為了不違背類的封裝特性,我們是把類成員設定為protected(保護狀態)的,但是我們為了簡化代碼,使要說明的問題更為直觀,更容易理解,我們在此處都設定
Time of Update: 2017-02-27
在學習這一章內容前我們已經學習過了類的建構函式和解構函式的相關知識,對於普通類型的對象來說,他們之間的複製是很簡單的,例如:int a = 10;int b =a;自己定義的類的對象同樣是對象,誰也不能阻止我們用以下的方式進行複製,例如:#include <iostream>using namespace std;class Test{public: Test(int temp) { p1=temp; }protected: int
Time of Update: 2017-02-27
隨著病毒、流氓軟體、廣告軟體等的日益增多,許多人都開始使用註冊表監視程式,這些監視程式通常會在安裝軟體試圖修改註冊表時,彈出一個警告視窗提示使用者。然而,在安全問題上,經常被忽略的地方則是Windows事件記錄--尤其是安全日誌,安全日誌通常記錄了Windows作業系統及關鍵系統應用程式的操作,如試圖非法登入、連接埠掃描、及其他安全相關的事件。文中將示範如何在應用程式中監視Windows事件記錄,當然了,還可以對程式進行擴充,如在事件記錄記錄到特定的事件類型時,發電子郵件通知使用者。用
Time of Update: 2017-02-27
本文講述了如何用C++Builder實現Messenger的詳細方法,其中使用了如下技術:1. 多線程式技術,防止介面出現死結。2. 使用了網路枚舉來枚舉線上的網路使用者。3. 使用了Unicode的轉換函式進從AnsiString到Unicode的轉換。4. 使用了簡單的不規則視窗的技術。5. 自動安裝,將自己加入系統起動中。6. 系統托盤技術。編程方法:1. 如圖所示在表單上加入的有的控制項:TListView,TTreeView,TMemo,菜單、托盤、按鈕、狀態列2.
Time of Update: 2017-02-27
如果你在網路上傳遞一份資料,但卻存在著種種不安全的因素,使你對資料能否原封不動地到達目的地而心存疑惑,這時,你就可以給資料加上數位簽章,從而使對方可以通過驗證簽名來檢查你所傳過去的資料是否已被他人修改。一、程式原理數位簽章的工作原理還是比較簡單的,它是根據你所提供的未經處理資料,經過複雜的演算法,產生特定的資料簽名,對方通過同樣的過程也產生簽名,如果資料已被修改,那麼就不可能得到兩份一模一樣的簽名,從而就可判斷資料已被他人修改。編程人員利用Windows的CAPI介面,就可以實現資料的加密、解密
Time of Update: 2017-02-27
C++ Builder作為一種RAD方式的程式開發工具,其全新的可視化編程環境、面向組件的開發模式無疑會大大地提高編程效率。它對繁雜的Windows 訊息及API作了較全面的封裝,編程者在大多數情況下不需理會Windows訊息的細節,只要將心思放在組件的事件處理函數上即可。然而,畢竟Windows作業系統是一個以訊息驅動的系統,運行其上的應用程式,自然無法脫離系統之外,因此掌握並運用訊息處理,對一些問題的處理會有事半功倍的效果。儘管C++ Builder的VCL控制項封裝了大多數常用的訊息,C+
Time of Update: 2017-02-27
一、註冊表編程詳解Windows 註冊表中包含了系統配置、機器硬體設定、 Win32 應用程式和使用者的其他配置資訊。許多進階一些的功能都要通過對註冊表的操作來實現。在 WinAPI 中提供了 RegCgreateKey() 、 RegOpenKey() 、 RegQueryValue() 等函數操作註冊表,但是用這些函數來操作註冊表使用起來非常麻煩。而利用 C ++ Builder 的 TREGISTRY 類,我們則可以輕鬆實現對註冊表的操作。下面我先介紹一下 TRegistry 類使用方法。
Time of Update: 2017-02-27
很多書在一開始就開始學習josephus問題,為了讓大家前面學起來較為容易我把前面涉及到此問題的地方都故意去掉了,現在我們已經學習過了結構體和類,所以放在這裡學習可能更合適一些。在正式開始學習之前我們先回顧一下如何利用數組和結構體的方式來解決,最後我們再看一下如何利用物件導向的抽象理念進行解決此問題的程式設計,相互對比,找出效率最高,最容易理解,最方便維護的程式來,說明利用物件導向的抽象理念進行程式設計的好處。josephus問題其實就是一個遊戲,一群小孩圍成一個圈,設定一個數,這個數是個小於小
Time of Update: 2017-02-27
摘 要:本文簡單介紹了Windows環境下進行多線程編程的意義,重點討論了C++Builder環境下開發多線程應用程式這一問題,並通過實現生產者-消費者問題,幫我們更好地理解同步概念及其實現方法。關鍵詞:多線程;同步;生產者-消費者;C++Builder線程之可行性在很多情況下,可能需要為程式建立線程。這裡給出其中一些可能性:(1)如果建立的是一個多文檔介面(Multiple Document
Time of Update: 2017-02-27
請注意,這一節內容是c++的重點,要特別注意!我們先說一下什麼是建構函式。上一個教程我們簡單說了關於類的一些基本內容,對於類對象成員的初始化我們始終是建立成員函數然後手工調用該函數對成員進行賦值的,那麼在c++中對於類來說有沒有更方便的方式能夠在對象建立的時候就自動初始化成員變數呢,這一點對操作保護成員是至關重要的,答案是肯定的。關於c++類成員的初始化,有專門的建構函式來進行自動操作而無需要手工調用,在正式講解之前先看看c++對建構函式的一個基本定義。1.C++規定,每個類必須有預設的建構函式
Time of Update: 2017-02-27
上兩篇內容我們著重說了結構體相關知識的操作。以後的內容我們將逐步完全以c++作為主體了,這也意味著我們的教程正式進入物件導向的編程了。前面的教程我已經再三說明,結構體的掌握非常重要,重要在哪裡呢?重要在結構體和類有相同的特性,但又有很大的區別,類是構成物件導向編程的基礎,但它是和結構體有著極其密切的關係。我們在c語言中建立一個結構體我們使用如下方法:struct test{ private: int number; public: float socre;
Time of Update: 2017-02-27
在C++中,&這個符號有兩個含義,一種含義是取某個變數或者對象的地址。這個地址是指記憶體位址,這個地址取到之後,可以賦給一個指標。例如下面這樣int a=5;int *p=&a;這就表示,有一個變數為a,其值為5,然後有一個指標變數p,它儲存了變數a的地址。但C++中,&還有一個用途是定義引用常量。引用其實就相當於是一個變數的別名,從它的功能上說與指標很類似,但使用起來比較簡便。我們先來看如何定義一個引用int a=5;int &b=a;這就表示,有一個變數為a,
Time of Update: 2017-02-27
*************************************************************************************** [翻文轉字]C++ Builder控制項版 ** V1.0 正式版 使用說明 ** 2000-04-30 ***************************************************************************************著作權說明:-------------作者:
Time of Update: 2017-02-27
什麼是指標?指標是儲存了變數在記憶體中的地址。但是指標自己也需要有一個地址。在C++中,通過&符號,可以取得某個變數的記憶體位址。使用* 可以定義一個指標變數。該變數的類型要與其引用的變數類型一致。int main(){ int i=5;//這是一個整型變數i int *p=&i;//這是通過定義了一個指標p,儲存了i的記憶體位址 cout<<"變數i的值為:"<<i<<endl;//輸出i的值
Time of Update: 2017-02-27
static 是C++中很常用的修飾符,它被用來控制變數的儲存方式和可見度,下面我將從 static 修飾符的產生原因、作用談起,全面分析static 修飾符的實質。static 的兩大作用:一、控制儲存方式:static被引入以告知編譯器,將變數儲存在程式的靜態儲存區而非棧上空間。1、引出原因:函數內部定義的變數,在程式執行到它的定義處時,編譯器為它在棧上分配空間,大家知道,函數在棧上分配的空間在此函數執行結束時會釋放掉,這樣就產生了一個問題: