Time of Update: 2018-12-03
雖然是老生常談,但下面這篇文章還是概括地很全面的。C++中的static有以下三種不同的效果:當用於成員變數時,表示它將由類分配管理而不是執行個體。當在一個函數中時,資料將會被靜態分配,在函數第一次被調用時初始化,且一直存在到程式退出。它當然也僅在當前函數中可用。這個特性經常被用於單例的延遲建構。 當在一個編譯單元中(如源檔案),它可以在本單元中視為全域的,但對於其它單元卻是不可見的。第三種情況會在無命名空間中允許類定義中並未匯出的聲明 (Use (3) is somewhat
Time of Update: 2018-12-03
VS2003、VS2005、JAVA等都配備了代碼文檔化的工具,你想在VC6中也擁有這麼酷的工具嗎?本文就讓你夢想成真。只需要十分鐘哦。:)在把你的代碼文檔化之前,你可能會有以下的疑問:一、為什麼需要軟體文檔?1、可能你的公司需要一些文檔。2、如果過半年,你還能認得你的代碼嗎?3、你的同事可能會經常煩著你,"為什麼這段代碼你這樣寫啊??"。4、你可能將要離開公司或者退休了,但你並不想你的代碼從此被扔進垃圾桶裡,畢竟這是你的心血。5、你覺得需要。二、為什麼使用自動化的文檔產生工具?1、你可能隨時會
Time of Update: 2018-12-03
非同步編程出現已經很早了,微軟在silverlight中的(RIA
Time of Update: 2018-12-03
C++的static有兩種用法:面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。一、面向過程設計中的static1、靜態全域變數在全域變數前,加上關鍵字static,該變數就被定義成為一個靜態全域變數。我們先舉一個靜態全域變數的例子,如下:#include<iostream>using namespace std;static int n; //定義靜態全域變數void fn(){n++;
Time of Update: 2018-12-03
(點擊此處,接上篇)但是也許你依然在為 Widget 從 NewHandlerSupport<Widget> 繼承而煩惱。如果是這樣,當你注意到 NewHandlerSupport template 從來沒有用到它的 type parameter T 時,你可能會更加煩惱。它不需要那樣做。我們需要的全部就是為每一個從 NewHandlerSupport 繼承的 class 提供一份不同的 NewHandlerSupport ——特別是它的 static data
Time of Update: 2018-12-03
noncopyable標頭檔:
Time of Update: 2018-12-03
這幾天Scott Meyers在artima上發起了C++書籍的大討論,他給我們列了他認為最牛的五本經典書籍,依次是:The C++ Programming Language by Bjarne Stroustrup, Addison-Wesley, 1986 (1st edition), 1991 (2nd edition), 1997 (3rd edition), 2000 (special edition).Effective C++ by Scott Meyers,
Time of Update: 2018-12-03
near指標是16位指標,依賴一個段地址寄存器,指標變數就是位移量,利用 段地址寄存器+指標 來定址,所以有64K之限制。far 指標是32位指標,不但有16位的位移量,還有16位的段地址,但此指標有個缺陷,增量時只加到位移部分,一旦16位的位移量超過了FFFF就會回到這個段地址的初始。所以,又引入了huge指標,huge指標與far一樣,其區別僅在於使用了標準化的方法來表示,這樣所有的地址都有一個唯一的表示方法,從而避免了far指標的問題。null
Time of Update: 2018-12-03
論壇的lhslktg朋友發了一個貼,大意是說在他的程式裡面調用了很多的cout的輸出,是否能夠使用最快速的方法,使得程式的輸出能夠定向到一個檔案內。我理解這個所謂的快速的方法,就是盡量不要改動原有的程式,至少不要改動程式的內部,而達到這個功能。有朋友給了一個最好的辦法,就是命令輸出重定位。假如,應用程式的名稱為: testcmd,則可以使用下面的命令:testcmd
Time of Update: 2018-12-03
C/C++從入門到高手所有必備PDF書籍收藏,喜歡的朋友支援下吧~C:《C和指標》- PDF高清版:http://www.fishc.com/a/book/C/821.html《C程式設計語言》- 完美中文版PDF:http://www.fishc.com/a/book/C/632.html《The C Programming Language》- 英文原版:http://www.fishc.com/a/book/C/115.html《C的缺陷與陷阱》-
Time of Update: 2018-12-03
如果說C語言聲明很簡單的人不是牛人就是還沒入門。本文來講解C語言的聲明的一些基本內容,很多內容參考《c專家編程》。首先由一個最簡單的問題引入,你知道 int * p[5] 和 int (*p)[5] 的區別在哪裡嗎?把後面的答案遮到,想想。也許你知道反正一個是含有五個指向整型的指標元素的指標數組,另一個是指向一個擁有5個整型元素的數組的指標,具體呢?int
Time of Update: 2018-12-03
作用:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。UML結構圖:適用於以下情況:1)當建立複雜物件的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。 2)當構造過程必須允許被構造的對象有不同的表示時。抽象基類:1)Builder:這個基類是全部建立對象過程的抽象,提供構建不同組成部分的介面函數介面:1)Builder::BuildPartA,Builder::BuildPartB:是對一個對象不同部分的構建函數介面,Builder的衍生類別來具體實現.另
Time of Update: 2018-12-03
你瞭解Linux嗎?相信現在越來越多的人會說“是”的。那麼你瞭解到何種程度呢?不可否認,目前決大多數的Linux使用者對Linux的瞭解還處於比較低級的層次,他們可能會幾條命令、會配幾種服務、會用rpm來安裝軟體、會操作KDE/Gnome介面等等,但是當他們遇到一些需要編譯安裝的軟體時,面對一些簡單的出錯資訊,他們就手足無措了。要想真正跨躍這些初級層次,你就不可能不去瞭解一些底層的東西,比如本文要講到的Linux下的C開發環境以及本文之外的其它作業系統知識。Linux
Time of Update: 2018-12-03
《深度探索C++物件模型》讀書筆記(2)。 default constructor僅在編譯器需要它時,才會被合成出來。 通常來說,由編譯器合成出來的default constructor是沒啥用的(trivial),但有以下幾種例外: (1)帶有“Default Constructor”的Member Class Object 如果一個class沒有任何constructor,但它內含一個member object,而後者有default
Time of Update: 2018-12-03
接著前面所述簡單原廠模式,簡單原廠模式符合物件導向4大原則:可維護,可複用,可擴充,靈活性高,耦合度低,但是他仍然有一個很 大的問題就是如果要增加新的產品,必須對工廠進行修改,這就違背了軟體設計的開閉原則 。 對於這種問題,我們可以使用原廠模式來解決。
Time of Update: 2018-12-03
C++ 調用.lib的方法:一、隱式的載入時連結,有三種方法 1 LIB檔案直接加入到工程檔案清單中 在VC中開啟File View一頁,選中工程名,單擊滑鼠右鍵,然後選中"Add Files to Project"菜單,在彈出的檔案對話方塊中選中要加入DLL的LIB檔案。然後在首先要使用該函數的地方加上該LIB的標頭檔,如#include "..\lib.h"即可(沒有標頭檔當然就不用了)。 2 設定工程的 Project
Time of Update: 2018-12-03
32.Make sure public inheritance models "is-a".所謂的最佳設計,取決於系統希望做什麼事,包括現在與未來。需要解決的問題:其中關於兩個assert都通過的地方有些疑惑。總結:“public繼承”意味著is-a。適用於base classes身上的每一件事情一定也適用於derived classes身上,因為每一個derived class對象也都是一個base class對象。33.Avoid hiding inherited
Time of Update: 2018-12-03
一、摘要 JSON的全稱為:JavaScript Object Notation,顧名思義,JSON是用於標記Javascript對象的,JSON官方的解釋為:JSON是一種輕量級的資料轉送格式。本文並不詳細介紹JSON本身的細節,旨在討論如何使用C++語言來處理JSON。關於JSON更具體的資訊,可參見JSON官網:http://www.json.org ,http://json.org/json-zh.html二、本文選擇處理JSON的C++庫
Time of Update: 2018-12-03
(點擊此處,接上篇)如如果你掀開編譯器的蓋頭偷看一下,你會發現 references(引用)一般是作為 pointers(指標)實現的,所以以 by reference(傳引用)方式傳遞某物實際上通常意味著傳遞一個 pointer(指標)。由此可以得出結論,如果你有一個 built-in typ(內建類型)的 object(例如,一個 int),以 by value(傳值)方式傳遞它常常比 by reference(傳引用)方式更高效。那麼,對於 built-in
Time of Update: 2018-12-03
最近在做的一個項目中用到了網域名稱解析,用c#來進行解析的。其實在c#中已經有一個Dns類,可以直接拿來進行解析。下面是我寫的一個解析類:class Resolve { private IPAddress[] m_arrayIPs; private string _hostName; public void ResolveIP(string s_Host) { try {