原创 Python編程點滴

短小代碼執行效率的測試import timeitt = timeit.Timer("<被測代碼>","<被測代碼的初始化>")t.timeit() 更好的性能監測器:profile, cProfile 判斷表達式值是否爲空或假不要將表

原创 虛基類的初始化

  假設有如下的類: 基類B,虛繼承派生類D1, D2, 最終派生類F,多繼承自D1, D2。   1. B的直接派生類,D1和D2,其初始化列表中要顯式地調用B的構造函數; 2. B的間接派生類,F,其初始化列表也要顯示的調用B的構造函

原创 MFC 五大批判【轉自CSDN】

  寫在本文之前算起來,我用Visual C++也有將近5年的歷史了。在這期間,我也曾涉獵過Visual Basic和Delphi,但都是淺嘗而止;V

原创 The memory size of a C++ object instance.

 The accumulated size of its nonstatic data members. The static data memvers, like the member functions, are stored in

原创 GDI+中的變換

在GDI+中繪圖時,其座標是相對Graphics座標系中的座標。改變Graphics座標系的原點、方向,Graphics中繪製的圖形、圖像也會隨之而改變。因此,對圖像、圖形進行變換時,可以不必像GDI中先計算它們變換後的座標,再按照新的座

原创 防止C++的類被繼承

核心解決方法: 讓目標類T,虛繼承基類B。(虛繼承迫使虛基類的任何層次的子孫都要顯式地初始化虛基類。) B的構造函數私有, T是B的友元類。 實現方法: 1.   class   T;         class   B{    

原创 用C語言實現參數個數可變的函數【轉自中國程序員網】

         採用C語言編程的時候,函數中形式參數的數目通常是確定的,在調用時要依次給出與形式參數對應 的所有實際參數。但在某些情況下希望函數的參

原创 一道算法題的數學分析

題目: 一個實數序列:ai = (ai-1–ai+1)/2 + d, (1<i<N) (N<60)。鍵盤輸入N, d, a1, an, m,求am。 分析: 一看即知:這是一個數學味道極濃的算法題,首先需要一番推理分析才能編程,否則會無處

原创 C++ reference is implemented as a pointer internally.

Internally, a reference is generally implemented as pointer and the object

原创 COM的內存管理

第一種方法,直接使用IMalloc接口進行內存管理。 調用CoGetMalloc函數獲取IMalloc接口指針。 HRESULT CoGetMalloc(DWORD dwMemContext, IMalloc **pMalloc) ; d

原创 進程內COM組件的創建過程

1. 客戶程序首先調用CoCreatInstance,CoCreateInstanceEx,或者CoGetClassObject,實際上前兩個函數都是經過包裝過的輔助函數,其內部都是通過調用CoGetClassObject實現的。 2.

原创 COM聚合的實現

聚合指的是COM對象轉接客戶端對某個接口的請求。 某COM對象B並不實現ISomeInterface接口,但是可以通過調用某個內部COM對象A來支持該接口。意思是指,當客戶端調用B所支持的接口IOtherInterface查詢ISomeI

原创 COM聚合的實現

聚合指的是COM對象轉接客戶端對某個接口的請求。 某COM對象B並不實現ISomeInterface接口,但是可以通過調用某個內部COM對象A來支持該接口。意思是指,當客戶端調用B所支持的接口IOtherInterface查詢ISomeI

原创 雙緩衝技術:Double Buffering

適用情況:要繪製一張由衆多小圖組成的大圖,及逐次繪製各個小圖而形成一張大圖。 核心步驟: 1.         先在內存中構造一張大圖的對象, 2.