原创 [讀書筆記] Inside C++ Object筆記(第4章: Function語意學)

1. 調用方式 經由一個class object調用一個virtual function,這種操作應該總是被編譯器像對待一般的nonstatic member function一樣的加以決議. // Point3d obj obj.n

原创 [Happy Coding] 只用BIT操作,求解整型和浮點數的絕對值

Q: Given one integer number, how to solve its absolute with bitwise op, and how about floating number? A: Q1: For inte

原创 [Happy Coding] delete p;而不是delete [] p; 真的會導致內存泄漏嗎?

給定下面的C++代碼片段: class A { public: int m_data[10]; }; A* pA = new A[20]; delete pA; 我們知道這裏應該用delete [] pA;,但是del

原创 [讀書筆記] Inside C++ Object筆記(第5章: 關於ctor/dtor/copy-ctor/op=)

1. typedef struct {     float x, y, z; } Point; 編譯器並不會產生那個trivial的函數(ctor/dtor/copy-ctor/assign-op),因爲它會認爲它是一個POD數據結構,

原创 [Effective WX] wxPropertyGrid遇上wxWS_EX_VALIDATE_RECURSIVELY產生的BUG

對於wxWidget的第三方庫wxPropertyGrid,客戶端代碼實例化一個wxPropertyGrid時有時會發生CRASH。 簡單的說,就是下面的代碼行在某種情況下會CRASH: wxPropertyGrid* pPG = ne

原创 [Happy Coding] 關於system/exit/wait的解釋

關於system/exit/wait的解釋 先看下面的代碼段: static int system2(const char *command) { pid_t pid; int status; pid = f

原创 啓動我自己的<Effective Python>系列文章

接觸C++的程序員都知道,我們有<Effective C++>系列,但是python好像並沒有這樣的系列文章或者書籍。但是我們在進行python編程時,常常遇到一個問題有好多種解決方案,我們該如何選擇其中一個比較好的,甚至最好的解決方案呢

原创 [Effective WX] 有關wxGTK的模態對話框(modal dialog)彈出的非模態窗口的問題

wxGTK上有這樣的的編程問題: 已經有一個模態對話框(通過ShowModal()顯示出來),然後從它上面彈出一個非模態窗口(爲什麼會是非模態?應該是或者是業務需求,或者是想重用已存在所需功能的非模態窗口類),調用它的Show()函數將其

原创 技術書籍推薦

1. <C專家編程> 害怕C嗎?害怕C中的指針嗎?搞不懂C中奇怪的類型聲明嗎?如果答案是“是”,那你應該閱讀這本書。因爲閱讀完這本書之後,你真的就會是C方面的專家了! 2. <C++沉思錄> 閱讀這本書,可以讓你不再太關心C++語法,從

原创 <C陷阱與缺陷>中的printf

<C陷阱與缺陷>中關於printf 1. 格式符 %g, %f, %e這3個格式項用於打印浮點值。%g格式項用於打印那些不需要按列對齊的浮點數特別有用。它在打印出對應的數值時,會去掉該數值尾綴的零,保留6位有效數字。 printf("

原创 [Happy DSA] 如何對單鏈表進行快速排序

之前有一篇文章介紹了glib庫中單雙向鏈表的排序採用了歸併排序,並且不需要額外的空間,這篇文章將介紹c-algorithms庫中單雙向鏈表的快速排序過程: 通常快速排序算法都是施行於數組,但它也可以作用於單鏈表(這裏以單向鏈表爲例)。

原创 [Effective WX] wx的UI UnitTest explained

在wx2.9.4中,wx支持了UI UnitTest。我們來看下這個framework是如何實現的UI UnitTest 1. wxUIActionSimulator類 wxUIActionSimulator類利用不同平臺的API(w

原创 [Happy Coding] fprintf 不正確調用惹的禍

我們都知道C語言標準庫操作文件寫有一個函數叫做fprintf,用來寫出字符串到文件裏。這個函數如果不特別注意,會給我們帶來很大的麻煩。 比如下面的代碼段: const char* outstring = "xxxxx"; FILE* o