Time of Update: 2018-12-04
上篇文章提到了 C++ 類建構函式對成員變數初始化賦值時使用“初始化列表”的方式帶來的好處。這篇文章將介紹另一個大大的好處——由初始化列表異常塊機制帶來的建構函式的安全性機制。 聽起來有些拗口。直接上代碼:class Fck{ int* sbArray;public: Fck ( int sbNum ); ~Fck ();};Fck :: Fck ( int sbNum ) try: sbArray ( new int[sbNum] ){
Time of Update: 2018-12-04
根據書上原代碼,會出錯,經本人糾正後正確代碼如下: // pro2.cpp : Defines the entry point for the application.//#include <stdafx.h>#include <string>//using namespace stdLRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ PAINTSTRUCT ps;
Time of Update: 2018-12-04
1.關鍵字inline必須與函數定義體放在一起才能使函數真正內聯,僅把inline放在函式宣告的前面不起任何作用。inline是一種用於實現的關鍵字,而不是用於聲明的關鍵字。高品質C++程式設計風格的一個基本原則:聲明與定義不能混為一談,使用者沒有必要也不應該知道函數是否需要內聯。2.const引用可以初始化不同類型的對象或者初始化為右值(如字面值常量)。同樣的初始化對於非const是非法的。即將引用綁定到不同類型時,會發生:eg: double dval = 3.14;
Time of Update: 2018-12-04
考慮如下代碼:void* operator new ( size_t size ){ printf ( "Malloc running! Size: %u/n", size ); return malloc ( size );}void operator delete ( void* memblock ){ printf ( "Free running!/n" ); free ( memblock );}class Fck{public: Fck ()
Time of Update: 2018-12-04
或許大家很早就對函數多個出口時的釋放語句或解鎖語句感到萬分無奈而頭痛不已,但是這種情況從此將不再讓你煩惱!因為你有了 —— RAII 技術!!RAII(Resource Acquisition Is Initialization 資源獲得即初始化)是管理資源的一種方式,它在構造對象時初始化資源,析構對象時釋放資源,有時也把這2個過程分為RAII和RRID(Resource Release Is Destruction 資源釋放即析構)以下是以 CRITICAL_SECTION 實現的非 MFC
Time of Update: 2018-12-04
文章目錄 一.什麼是位元組對齊,為什麼要對齊?二.位元組對齊對程式的影響:三.編譯器是按照什麼樣的原則進行對齊的?四.如何修改編譯器的預設對齊值?五.針對位元組對齊,我們在編程中如何考慮?六.位元組對齊可能帶來的隱患:七.如何尋找與位元組對齊方面的問題: 一.什麼是位元組對齊,為什麼要對齊?
Time of Update: 2018-12-04
在《C++ 類建構函式初始化列表的異常機制 function-try block》這篇文章中,我聊到了這一機制帶來的一大好處是提供了一套保證類對像構造過程的安全性的機制。在更前篇《C++ 建構函式初始化列表的好處》中則談到了這一機制帶來的效能上的益處。不過由於我的樣本模型建得過於簡單,可能讓一部分讀者對此理解不深,以至於引發了像 yshuise 同學情緒激動的疑惑……這篇我舉一兩個小例子來更進一步說明問題,解釋我的觀點。
Time of Update: 2018-12-04
根據網上資料整理而成。 一、C#中已聲明的可訪問性: 1. public:訪問不受限制; 2.internal:訪問僅限於所屬程式集; 3. protected:訪問僅限於當前類和其子類; 4. internalprotected:訪問僅限於當前程式集或其子類(子類可以不屬於當前程式集); 5. private:訪問僅限於包含該成員的類型。 二、預設可訪問性 1. 命名空間(namespace)隱式地具有public訪問性,且不允許有存取修飾詞;
Time of Update: 2018-12-04
C++ 類對像構造時,需要對類成員變數完成初始化賦值操作。使用初始化列表完成這步操作在效能上有益處。什麼好處呢?擺道理顯得不夠徹底。看書不如做實驗。讓我們結合執行過程來查看。考慮如下範例程式碼: Derive 類建構函式兩個 Base 類型的參數,分別賦給該類兩個 Base 類型的成員變數 b1、b2,一個使用初始化列表,一個使用等號賦值。輸出結果如下: 前兩行輸出是主函數前兩行構造 b1、b2 對像時調用的帶參建構函式。第三行是初始化列表構造 b1
Time of Update: 2018-12-04
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;
Time of Update: 2018-12-04
文 / 李博(光宇廣貞) 左值與右值 左值與右值的概念要追溯到 C 語言,由 C++ 語言繼承了上來。C++ 03 3.10/1 如是說:“Every expression is either an lvalue or an rvalue.”左值與右值是指運算式的屬性,而非對像的屬性。
Time of Update: 2018-12-04
在C#下要改變表單的大小,只需要添加一個statusstrip,然後把sizinggrip改為true,這樣滑鼠在表單右下角時就會出現一個尺寸調整底框,就可以調整大小。 表單大小可以調整了,但是控制項不會跟著一起調整,需要為表單添加一個Resize事件,然後在事件中調整控制項的大小。下面就以一個名稱為ListFiles的listview控制項為例進行說明: this.ListFiles.Width = this.Width
Time of Update: 2018-12-04
1 .Net互操作.Net不能直接操作Unmanaged 程式碼,這時就需要互操作了。1.1 P/Invoke許多常用Windows操作都有託管介面,但是還有許多完整的 Win32 部分沒有託管介面。如何操作呢?平台叫用 (P/Invoke) 就是完成這一任務的最常用方法。要使用 P/Invoke,您可以編寫一個描述如何調用函數的原型,然後運行時將使用此資訊進行調用。1.1.1 枚舉和常量 以MessageBeep()為例。MSDN 給出了以下原型:BOOL MessageBeep( UINT
Time of Update: 2018-12-04
現有一個程式,只能啟動一個執行個體:啟動時,如果檢測到執行個體已啟動,則啟用並顯示到最前端;否則啟動一個新的執行個體:為此可以通過事件實現。// 判斷是否已啟動 bool IsFormExists(Form frmOwner_, string strEvent_) { EventWaitHandle eHandle; try { eHandle = EventWaitHandle.
Time of Update: 2018-12-04
Visual C#是微軟公司推出的新一代程式開發語言,Visual C#是微軟公司.NetFrameWork架構中的一個重要的組成部分,也是微軟公司向程式員極力推薦一個新的程式開發平台。和以往的開發語言相比較,他有更強大功能,更高的穩定性和更高的安全性。也正因為如此,Visual C#正在受到越來越多的編程愛好者的歡迎。
Time of Update: 2018-12-04
摘要:本文闡述了在基於.NET平台的Windows程式開發中使用模態表單的諸多方面,部分內容延伸到一般表單的應用。概述 何謂模態表單?簡單的可以理解為表單對話方塊,使用者必須在完成該表單上的操作或關閉表單後才能返回開啟此表單的表單。本文不對模態表單的定義、特徵、功能做具體討論,主要把重點放在如何在.net表單應用程式中有效使用模態表單,解決使用模態表單中碰到的常見問題。 模態表單的屬性設定 在.net中一個System.Windows.Forms.Form類就表示一個表單,通過visual
Time of Update: 2018-12-04
為了隱藏表單,可以把windowstate設定為最小化,把showintaskbar設為false。另外可以把各種不需要的東西(如標題列等)都去掉。還可以把size改為(0,0);這樣之後,表單就不會顯示了。 做了如上設定後,FormLoad將無效,所以很多初始化要移到建構函式中去。 通過上面的設定,表單是不顯示了,但是通過alt+tab還是可以看見的,為此可以重載SetVisibleCore。 protected override void SetVisibleCore(
Time of Update: 2018-12-04
網路攻擊第一步是掃描目標機的開放連接埠,其原理是(摘自http://www.pconline.com.cn/pcjob/nettech/safe/others/0502/557020_1.html):根據TCP協議規範,當一台電腦收到一個TCP串連建立請求報文(TCP SYN)的時候,做這樣的處理: 1、 如果請求的TCP連接埠是開放的,則回應一個TCP ACK報文,並建立TCP串連控制結構(TCB); 2、 如果請求的TCP連接埠沒有開放,則回應一個TCP
Time of Update: 2018-12-04
“具名管道”是一種簡單的處理序間通訊(IPC)機制。具名管道可在同一台電腦的不同進程之間,或在跨越一個網路的不同電腦的不同進程之間,支援可靠的、單向或雙向的資料通訊。用具名管道來設計應用程式實際非常簡單,並不需要事先深入掌握基層網路傳送協議(如TCP/IP或IPX)的知識。因為具名管道利用了微軟網路提供者(MSNP)重新導向器,通過一個網路,在各進程間建立通訊。這樣一來,應用程式便不必關心網路通訊協定的細節。命令管道是圍繞Windows檔案系統設計的一種機制,採用“具名管道檔案系統”(Named
Time of Update: 2018-12-04
情境:原版的故事裡有五個哲學家(不過我們寫的程式可以有N個哲學家),這些哲學家們只做兩件事--思考和吃飯,他們思考的時候不需要任何共用資源,但是吃飯的時候就必須使用餐具,而餐桌上的餐具是有限的,原版的故事裡,餐具是叉子,吃飯的時候要用兩把叉子把麵條從碗裡撈出來。很顯然把叉子換成筷子會更合理,所以:一個哲學家需要兩根筷子才能吃飯。現在引入問題的關鍵:這些哲學家很窮,只買得起五根筷子。他們坐成一圈,兩個人的中間放一根筷子。哲學家吃飯的時候必須同時得到左手邊和右手邊的筷子。如果他身邊的任何一位正在使用