原创 聚合 耦合

聚合:一個模塊內部各成分之間相關聯程度的度量。把聚合稱之爲內聚。要做到高聚合,一個模塊僅完成一個獨立的功能,模塊內部不存在與該功能無關的操作或狀態。 耦合:模塊之間相關聯程度的度量。低耦合,就是將兩個模塊之間的關聯儘可能的降低,一個模塊發

原创 UML類圖與類的關係詳解

UML類圖與類的關係詳解 泛化(generalization):表示is-a的關係,是對象之間耦合度最大的一種關係,子類繼承父類的所有細節。直接使用語言中的繼承表達。在類圖中使用帶三角箭頭的實線表示,箭頭從子類指向父類。 實現(Real

原创 多線程使用的小錯誤

1.其中, func1和func2中都使用信號量myMutex,兩個函數裏面都是while死循環。 錯誤現象:兩個子線程老是沒有執行完或不執行。 代碼如下: int main() { myMutex = CreateMutex(..

原创 Git單個文件歷史修改記錄及回退

$ git log --pretty=oneline test.txt      --這是用來查看單個文檔的提交記錄,還有其他命令能夠查看修改的diff f98ad87abdc9e3414e9343d3651d66dc5ebda36e 再

原创 關於臨時變量的返回

今天寫一個+的重載,計算結果只能返回一個臨時變量對象,但是這個對象比較複雜,裏面有一些指針成員變量。然後,發現在這個函數結束,也就是return這個臨時變量時,進到了這個對象的類的析構函數中,這是可以理解的,因爲臨時變量會在函數結束前析構

原创 學習STL源碼_空間適配器_new

在提供的簡單例子中看到一句 new(p) T1(value); 之前一直都沒有見過這種用法。搜了一下: C++ 中 new 操作符內幕:new operator、operator new、placement new 這篇文章裏面有一篇引用

原创 模板的聲明和定義 頭文件與源文件

今天,寫了一個List的模板類,然後把它的聲明和定義分別放在頭文件和源文件中,發現編譯不通。然後,就有疑問了,一是爲什麼那些普通類我們分爲頭文件和源文件能編譯通過,二是模板爲什麼不行,所以這個編譯究竟做了什麼,這纔是我的問題。當我們對一個

原创 assert()函數

今天,遇到一個函數返回值時引用,但是返回值存在爲NULL的情況。下面是搜到的解決方案然後,就搜了搜assert()函數的用法,找到一篇,貼在下面assert()函數用法總結assert宏的原型定義在<assert.h>中,其作用是如果它的

原创 C++ 導入導出動態庫

今天不明白爲什麼大家在寫動態庫的時候,都要用到#ifdef @@@@API #else #define @@@@ __declspec(dllimport) #endif爲什麼明明是導出動態庫,還要用到dllimport。是因爲別人用到

原创 static全局變量與普通全局變量的區別

懶得總結直接粘來源:點擊打開鏈接全局變量具有全局作用域。全局變量只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變量定義的源文件需要用extern 關鍵字再次聲明這個全局變量。局部變量也只有局部作用域,它是自動對象(

原创 VS 庫的問題

之前一直以爲關於庫的使用,在屬性->鏈接器->常規(附件庫目錄)裏設置正確就可以了,但是鏈接器的部分也還只是生成目標文件,如果是可執行文件,只有在運行的時候或者說DEBUG的時候,纔會看自己要用到的DLL文件。這個對應在屬性->調試->環

原创 GUID

最近看了一丟丟 windows核心編程,裏面提到建議使用GUID的字符串形式作爲對象名稱使用,來確保 命名的唯一性。 於是查了查GUID:全局唯一標識符(GUID,Globally Unique Identifier)是一種由算法生成的二

原创 C 小錯誤

1. 2017/11/20 一個同事遇到的。在一個類中有一個私有成員變量char數組比如 char m_name[32],有一個public函數char* GetName(){ return m_name;},然後這個同事想要在類外部的把

原创 QT 關於emit VS2008和VS2013的不同

今天把在VS2013中一個簡單的QT程序的頭文件和源文件直接添加到VS2008中,按道理是能通過編譯的,但是卻一直報類訪問權限的問題。 大致就是類ClassA中有一個函數static ClassA* getInstance(),有一個信號

原创 C宏定義——#號和##號

#:將後面的 宏參數 進行字符串操作,就是將後面的參數用雙引號引起來 ;##就是用於連接,拼接。#define PRINT(NAME) printf("token"#NAME"=%d\n", token##NAME) int main()