原创 VS2013 tuple 源碼分析

tuple這玩意實現方法就是遞歸方式展開函數包的完美示例。相關文章可以查看<深入應用C++11>3.2.1.1章節。 tuple的實現思想可以查看侯捷老師視頻:https://www.bilibili.com/video/BV1p4411

原创 MFC線程獨立對象管理機制分析

可以參考這篇博文https://blog.csdn.net/likePeak/article/details/3595982 #define EXTERN_THREAD_LOCAL(class_name, ident_name) \

原创 MFC 消息機制函數映射表

#define DECLARE_MESSAGE_MAP() \ protected: \ static const AFX_MSGMAP* PASCAL GetThisMessageMap(); \ virtual const AF

原创 VS 2010 STL stack與queue源碼分析

stack是棧,先進後出,只能一頭操作;queue是隊列,先進先出,一頭進,另一頭出。VS裏的stack與queue底層都是使用雙端隊列deque實現的。通過改變deque的行爲而生成不同的容器,這就做容器適配器。 stack //

原创 VS 2010 STL deque源碼分析

定義 deque 即雙端隊列,與vector相比,此容器多出了pop_front()和push_front()這兩個操作,即在首部的增刪操作;而與list相比,deque多出了對容器元素的隨機訪問功能。 寫在文章之前 網上也有很多關於de

原创 C語言難點總結

  1,*與++結合 char str[20]="123456789"; char* p =str; char c1 = *p++; //c1爲字符 1 *p++解析: *與++運算符 優先級同級,此優先級 結合方向 從右到左 。 所以先

原创 VS 2010 shared_ptr 源碼分析

類結構框架 下面這張圖來自於網絡,已不知原作者。這張圖表明瞭shared_ptr類結構圖 _Ref_count_base是在shared_ptr創建的時候new出來的。_Ref_count_base有3個子類,分別對應shared_pt

原创 C++類型轉換 const_cast static_cast dynamic_cast reinterpret_cast

C風格的強制類型轉換(Type Cast)很簡單,不管什麼類型的轉換統統是:TYPE b = (TYPE)a。C++風格的類型轉換提供了4種類型轉換操作符來應對不同場合的應用。 const_cast,字面上理解就是去const屬性。sta

原创 VS 2010 STL vector源碼分析

類結構框架 vector繼承於_Vector_val,繼承於_Container_base,_Container_base在debug模式下(只探索debug模式)就是如此定義:typedef _Container_base12 _Con

原创 VS 2010 CRT ::operator new源碼分析

從我們寫代碼說起 C++面試常見的一個問題是:new與malloc的區別,然後你去網上搜索這個問題,常見回答如下: malloc : 只能單獨給對象申請空間,不能進行構造函數的調用 new :  不僅能申請動態空間,還能調用構造函數進行對

原创 VS 2010 STL list源碼分析

類結構框架(debug模式) // TEMPLATE CLASS _List_nod template<class _Ty, class _Alloc> class _List_nod : public _Container

原创 VS 2010 STL 內存分配器

Alloc是分配內存之意,Construct是在內存裏構造之意。就好C++裏的new有分配內存,在分配的內存裏構造我們的對象這兩層作用。 其實這也就是分配器的作用。替換new與delete。 // TEMPLATE FUNCTION _

原创 VS 2010 auto_ptr

 下面這段描述來自http://www.cplusplus.com/reference/memory/auto_ptr/ Note: This class template is deprecated as of C++11. uniqu

原创 Qt 信號與槽機制

下部分代碼來自於https://blog.csdn.net/l09711/article/details/7451140,我自己添加了傳遞參數的部分  //MyObject.h #ifndef MY_OBJECT #define MY_

原创 VS2010 std::string 源碼分析

分配內存原理分配內存原理 union _Bxty { // storage for small buffer or pointer to larger one _Elem _Buf[_BUF_SIZE]; _Elem *_Ptr;