Time of Update: 2017-02-27
對象(Object)是類(Class)的一個執行個體(Instance)。如果將對象比作房子,那麼類就是房子的設計圖紙。所以物件導向設計的重點是類的設計,而不是對象的設計。
Time of Update: 2017-02-27
Explanation不能有 CV 限定符,在 C++ 中 CV 限定符指const和volatile。非成員函數在 C++ 中, 普通函數(非類的成員函數)不能有 CV 限定,即const和volatile限定。即非類的成員行數,用const進行修飾:int test() const //這是不對的,普通函數(非成員函數不能有CV約束) { //實現 }靜態函數在 C++ 中,靜態成員函數(static成員函數)不能有 CV
Time of Update: 2017-02-27
1 Reactor 架構概述POCO 中的 Reactor 架構是基於 Reactor 設計模式進行設計的。其中由 Handler 將某 Socket 產生的事件,發送到指定的對象的方法上,作為回調。2 光說不練假把式PoechantReactorServer 類,基本與 PoechantTCPServer:class PoechantReactorServer: public ServerApplication { public: PoechantServer() {} /
Time of Update: 2017-02-27
1 TCPServer 架構概述POCO 庫提供TCPServer架構,用以搭建自訂的 TCP
Time of Update: 2017-02-27
1 Poco::Net::DNSnamespace Poco { namespace Net { class Net_API DNS { public: static HostEntry hostByName(const std::string& hostname); static HostEntry hostByAddress(const IPAddress& address); static HostEntry resolve(
Time of Update: 2017-02-27
1 POCO 中的 SocketPOCO 中有 豐富的 Socket 封裝。其繼承關係如下:本文暫且只介紹 StreamSocket、ServerSocket、DatagramSocket2 Poco::Net::ServerSocketServerSocket 是一個封裝層次比較低(low level)的 Socket,其使用的是 TCP 串連。在實際的 Server 中推薦使用 TCPServer 或 Reactor 架構。下面是常式:#include
Time of Update: 2017-02-27
1 類型別名三個時間戳記相關的類型別名,TimeDiff表示兩個時間戳記的 差,第二個是以微秒為單位的時間戳記,第三個是以 100 納秒(0.1 微妙)為單 位的時間戳記:typedef Int64 TimeDiff; /// difference between two timestamps in microsecondstypedef Int64 TimeVal; /// monotonic UTC time value in microsecond resolutiontypedef
Time of Update: 2017-02-27
1 枚舉最大地址長度,這個與Poco::Net::IPAddress中的定義可以類 比,不過這裡指的是`struct sockaddr_in6enum { MAX_ADDRESS_LENGTH = #if defined(POCO_HAVE_IPv6) sizeof(struct sockaddr_in6) #else sizeof(struct sockaddr_in) #endif ///
Time of Update: 2017-02-27
1 Poco::Net::IPAddress地址最大長度,IPv4 是 in_addr 的長度, IPv6 是 in6_addr 的長度enum { MAX_ADDRESS_LENGTH = #if defined(POCO_HAVE_IPv6) sizeof(struct in6_addr) #else sizeof(struct in_addr) #endif /// Maximum length in
Time of Update: 2017-02-27
1 SelectModeenum SelectMode /// The mode argument to poll() and select(). { SELECT_READ = 1, SELECT_WRITE = 2, SELECT_ERROR = 4 };2 SocketListtypedef std::vector<Socket> SocketList;3 建構函式未初始化的 socket:Socket
Time of Update: 2017-02-27
基本類型在Poco/Types.h標頭檔中。以下以 GNU C/C++ 和 CLang 為例。不 過要強調的是,POCO 有極好的跨平台性,你能想到的平台,幾乎都可以運行 POCO。1 有符號整型typedef signed char Int8;typedef signed short Int16;typedef signed int
Time of Update: 2017-02-27
1 What is POCO?POCO 是什嗎?這是我最常被人問到的。POCO 是 POrtable COmponents 的縮寫,官方首頁:POCOProject.org。是一個非常出色的 C++ 庫,相當於 Java 的 Class Library、.NET 的 Framework 和 Apple 的 Cocoa。它與 Boost 是非常不同的,簡單說 Boost 就是相當於 Advanced STL。2 本系列文章所使用的 POCO 版本POCO C++ Library 1.4.3p1 (
Time of Update: 2017-02-27
模板(template)利用一種完全通用的方法來設計函數或類而不必預先說明將被使用的每個對象的類 型,利用模板功能可以構造相關的函數或類的系列,因此模板也可稱為參數化類別型。在C++語言中,模 板可分為類模板(class template)和函數模板(function template)。在程式中說明了一個函 數模板後,編譯系統發現有一個相應的函數調用時,將根據實參中的類型來確認是否匹配函數模板中對應 的形參,然後產生一個重載函數。該重載函數的定義體與函數模板的函數定義體相同,稱之為模板函數(
Time of Update: 2017-02-27
C++語言中預定義的運算子的操作對象只能是基礎資料型別 (Elementary Data Type),但是,在實際應用中,對於很多使用者自定 義資料類型(如類)也需要類似的功能,這就需要對已有的運算子賦予多種含義,使同一個運算子具有作 用於不同類性的資料導致不同類型的行為,這就是運算子多載。因此,運算子多載的目的是設定C++語言 中的某一運算子,讓它們之間並不衝突,C++語言會根據運算子的位置辨別應使用哪一種功能進行運算。
Time of Update: 2017-02-27
採用類的機制後實現了資料的隱藏與封裝,類的資料成員一般定義為私人成員,成員函數一般定義為 公有的,依此提供類與外界間的通訊介面。但是,有時需要定義一些函數,這些函數不是類的一部分,但 又需要頻繁地訪問類的資料成員,這時可以將這些函數定義為該函數的友元函數。除了友元函數外,還有 友元類,兩者統稱為友元。友元的作用是提供了工序的運行效率,但又破壞了類的封裝性。1.友元函數友元函數是可以直接存取類的私人成員的非成員函數。它是定義在類外的普通函數,它不屬於任何類
Time of Update: 2017-02-27
在一個類中還可以定義靜態成員,但靜態成員是所有對象公有的。靜態成員分為待用資料成員和靜態 成員函數。1.待用資料成員在類中定義待用資料成員的方法就是在該成員的前面加上關鍵字static.定義待用資料成員的語句格式如下:class 類名{……static 類型說明符 成員名;……};待用資料成員是類的所有對象共用的成員。待用資料成員所佔的空間不會隨著對象的產生而分配,也
Time of Update: 2017-02-27
多態性與前面提到的資料封裝和繼承性共同構成了物件導向程式設計的三個重要機制。1.靜態聯編與動態聯編由於函數重載的存在,當程式中出現調用同名函數時,編譯器會根據函數的參數類型、個數決定調用 執行哪一個同名函數的代碼,這種把一個函數的調用與適當的函數實現代碼聯絡在一起的過程,叫做聯編 。根據聯編的實現階段的不同,可將其分為靜態聯編和動態聯編兩種。靜態聯編是在程式編譯階段確定一個函數調用與函數實現代碼間的對應關係,這種對應關係確定下來
Time of Update: 2017-02-27
輸出主要由重載的左移操作符(<<)來完成,輸入主要由重載的右移 操作符(>>)完成。>>a表示將資料放入a對象中。<<a表示將a對象中儲存的資料拿出。接下來我們繼續看一 下C++風格的串流量控制,C++引入了ostringstream、istringstream、
Time of Update: 2017-02-27
1、求二個數的最大公約數:#include <iostream.h>int maxye(int a,int b){int temp;while(a%b){ temp=b; b=a%b; a=temp;}return b;}void main(){int aa,bb;cout<<"請輸入第一個數:";cin>>aa;cout<<"\n請輸入第二個數:";cin>>bb;cout<<
Time of Update: 2017-02-27
一個很方便的C++函數模板,可以並 且只可以計算含括弧的四則運算式,只有一個函數介面:int GetExpValue (_Tstream& istrin, _T& nReturn)參數解釋:istrin: 一個輸入資料流,可以是標準IO流,可以是檔案流,也可以是串流nReturn:用於接收計算結果的變數,計算所使用的類型由這個變數確定傳回值:返回非0表示計算成功,0表示計算失敗有錯誤程式碼:以下是引用片段:namespace fy_Exp{namespace