int CMath::QueryInterface(GUID iid, void** ppiInterface) {
if (iid == IID_IMath) {
*ppiInterface = static_cast(this);
AddRef();
}
...
}
QueryInterface 核心功能:客戶端請求接口指針,服務端將接口指針寫入 ppiInterface 輸出參數。this:當前 CMath 對象指針(實現了 IMath 接口)。static_cast(this) :將 CMath* 靜態轉換為 IMath* 接口指針(繼承關係,編譯時已知偏移量)。*ppiInterface = ...:解引用雙重指針,將接口地址賦值給調用者的指針變量。AddRef():增加引用計數,遵循 COM 規範。