Time of Update: 2018-12-04
下面是用來輸出變數信息的宏:#define typeof(typevar) / do { / string tmp; / cerr << "type of "#typevar" :"; / tmp = "c++filt -t "; / system((tmp + typeid(typevar).name()).c_str()); / } while(0);在這個宏定義裡面,do{}
Time of Update: 2018-12-04
1.第一個例子:假設:int var1 = 224; //存放var1的值224的記憶體位址是0x12ABCDEF則以下Code:int var2 = var1; // 將var1的值複製給var2.int& var2 = var1;//var2 是var1 的別名(var2是var1的引用),var1= var2 = 224,var1的值未發生複製,它們的值的地址都是0x12ABCDEFint var2 = &var1; //錯誤,
Time of Update: 2018-12-04
本文主要說明對象建立時建構函式的執行順序,對象成員的初始化順序;對象銷毀時解構函式的執行順序,對象成員的銷毀順序。 “對象的構造從類層次的最根處開始,在每一層中,首先調用基類的建構函式,然後調用成員對象的建構函式。析構則嚴格按照與構造相反的次序執行,該次序是唯一的,否則編譯器將無法自動執行析構過程。 一個有趣的現象是,成員對象初始化的次序完全不受它們在初始化表中次序的影響, 只由成員對象在類中聲明的次序決定。這是因為類的聲明是唯一的,而類的建構函式可以有多個,
Time of Update: 2018-12-04
建立和開啟FILE *fopen(const char *filename, const char *mode)//filename:開啟的檔案名稱(包含路徑,預設為當前路徑)//mode: 開啟模式常見開啟檔案r,rb 唯讀方式開啟w,wb唯寫方式開啟,如果檔案不存在,則建立該檔案a,ab追加方式開啟,如果檔案不存在,則建立該檔案r+, r+b, rb+ 讀寫方式開啟w+, w+b, wh+ 讀寫方式開啟,如果檔案不存在,則建立該檔案a+, a+b, ab+ 讀和追加方式開啟,如果檔案不存在,
Time of Update: 2018-12-04
1. 建立一個win32項目,選擇dll建立,如果是已經編寫好的類,則可以勾選”空項目”。2. 在“標頭檔”目錄下建立新的標頭檔,這裡以Node類為例:Node.h,將編寫好的Node的聲明寫入Node.h中。3. 注意,一般類的封裝此時就應當寫Node.cpp從而實現該類中的一些成員方法,但是由於Node類使用了模板(template),因此需要將實現和聲明寫在同一個檔案中,所以這裡我們不再建立Node.cpp檔案,而是直接將成員函數的實現寫在Node.h中。4.
Time of Update: 2018-12-04
<轉自“軟體工匠筆記”:http://linhs.blog.51cto.com/,特別表示感謝,希望更多被C++模板所折磨的人能看到這篇文章,寫得很清楚透徹> 一般發布C++類的方法是:使用.H檔案寫類定義,用CPP檔案寫實現。發布的時候可以把H檔案和CPP編譯出來的.O檔案給客戶程式,然後用戶端程式來編譯和連結類標頭檔和目標檔案。 雖然也發行就緒CPP源檔案,但發布.O檔案可以更好的維護類的相對獨立性,或者是原始碼實現不方便讓他人看到。 例如, 有類的標頭檔://Rec.
Time of Update: 2018-12-04
Visual C++編程指南 http://msdn2.microsoft.com/zh-cn/library/ms173251(VS.80).aspx 英文版:Visual C++ Programming Guide http://msdn2.microsoft.com/zh-cn/library/ms173251(en-us,VS.80).aspx 本節包含關於 C++ 編程的概念性和基於任務的主題。本節內容 (1)使用 C++ 進行 .NET 編程 說明整個 C+
Time of Update: 2018-12-04
《C語言也能幹大事》的課程體系 很多同學對咱們C語言的課程、學習存在著很多誤解,而且很多同學還不知道《C語言也能幹大事》後 面的課程安排是什麼,因此這裡一併做一個說明。 有同學問“別人都說開發資料庫系統、Web系統還是Java、C#等最流行,咱們用C語言學了開發也不是 浪費嗎?”、“C語言不是做嵌入式開發、作業系統等底層的東西嗎?”、“我們為什麼不講C語言的 嵌入式開發?”、“人家都學Web開發,咱們這學C語言開發C/S的程式不是落伍了嗎?”。
Time of Update: 2018-12-04
今天讀了<<Windows 程式調試>>編寫便於調試的C++代碼這一章內容,覺得收穫較大,對本人在編程風格和編程習慣上有指導意義.筆記如下: 一.設計: 重要的特性是簡單性和耦合性, 大多數常見的設計錯誤來源於程式設計不必要的複雜成分,因此盡量使程式簡單合理.耦合性用來衡量不同對象之間的依賴程度,因此程式中能獨立的對象要盡量獨立出來. 二.C++編程風格1.清晰地書寫代碼,最直接的說出你的意思;2.結構良好的代碼具有更加有用的調用棧(call
Time of Update: 2018-12-04
信噪比( S N )是指傳輸訊號的平均功率與加性雜訊的平均功率之比。 載噪比(C N
Time of Update: 2018-12-04
晚上討論班回來,發現一些問題以前不清楚。具體來說:一:atexit註冊的多個函數會形成一個鏈表。當使用者調用exit後,被註冊過的函數按照註冊的反向順序依次執行。另外,被atexit註冊的函數除了類型必須為void (*)(void)外,就是一個普通的函數,在其中可以調用其它函數,例如在其中可以調用main函數,這一點應該會很有用,下面是自己寫的一個示範代碼:#include <stdio.h>#include <stdlib.h> int done; void fn1
Time of Update: 2018-12-04
有如下一段 C++ 範本元編程代碼,求類型鏈表中最長類型的長度。// 求列表中位元組最長的類型的位元組長度值// 使用鏈表傳遞的思想:1::2::3::4::[]#include <iostream>using namespace std;// 尾結點struct NullType;// 鏈表結點template <class T, class S> struct TypeList;// 定義四結點鏈表#define TypeList_1( T1 )
Time of Update: 2018-12-04
文 / 李博(光宇廣貞) 話說 1994 年,C++ 標準委員會在聖迭哥舉行的一次會議期間,Erwin Unruh 同學展示了一段可以產生質數的代碼。這段代碼的特別之處在於質數產生於編譯期而非運行期,在編譯器產生的一系列錯誤資訊中間夾雜著從 2 到某個設定值之間 的所有質數。其改進版據說在 GCC 3.2 上得到驗證。 原始碼這裡就不貼出來了,網上或者任一本《模板元編程(C++ Template Meta -
Time of Update: 2018-12-04
C++ 如何會有“虛建構函式”?而且還有傳回值?有時我們希望類建構函式能夠像其它普通成員函數一樣使用:帶傳回值,可覆蓋(override)。我們可以設計這樣一個 constructor 函數: 我們在 LB 類中定義了這樣一個“帶傳回值的虛建構函式”。在衍生類別中,我們可以覆蓋(override)它。現在我們可以讓這個“建構函式”像一個普通的成員函數一樣使用了(其實它就是一個普通的成員函數)。這裡有一點需要注意,C++
Time of Update: 2018-12-04
分離編譯模式(Separate Compilation Model)允許在一處翻譯單元(Translation Unit)中定義(define)函數、類型、類對象等,在另一處翻譯單元引用它們。編譯器(Compiler)處理完所有翻譯單元後,連結器(Linker)接下來處理所有指向 extern 符號的引用,從而產生單一可執行檔。該模式使得 C++ 代碼編寫得稱心而優雅。
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
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;