自 1993 年微軟正式發布 COM 技術以來,Windows 平台的開發模式經歷了翻天覆地的變革。以 COM 為基礎的組件化技術體系,將 Windows 程式設計推入了組件化時代。至今,COM 技術依然煥發著旺盛的生命力,無數組件與軟體透過它實現了程式碼復用與資源共享。
然而,COM 程式設計因技術複雜度高,一度被視為「高不可攀」的領域。COM 在將 Windows 推向組件化時代的同時,也讓開發者站上了一座危險的山峰——四周懸崖峭壁,陷阱與玄機暗藏,稍有不慎便會摔得粉身碎骨。
COM 介面的智能指標,正是解決引用計數問題的一頂「降落傘」。雖然它不能保證你不會跌落懸崖,但至少能讓你不至於摔得太難看。許多開發者拒絕使用智能指標,理由與拒絕背降落傘如出一轍:
若你執著認為手動操作引用計數能讓程式碼更清晰,那麼你將面臨「異常安全」、「類型安全」等棘手問題。更遺憾的是,手動計數並不會讓程式碼更清晰——這在第一章將詳細論述。
本文聚焦於智能指標的有效使用與設計原則,將深入剖析:
文中提供大量實戰範例(部分改編自經典文獻,已標註出處),逐一剖析問題成因,期許讀者閱畢能有「豁然開朗」的體驗。受限於筆者水平,文中難免疏漏,敬請各位指正。
—— 作者:liuchang5 的專欄