通常,大多數MFC(基於窗口的類)都是從CObject派生而來的。 CObject做什麼? 爲什麼一些MFC類不需要從CObject派生?爲什麼有些MFC類不是從CObject派生的?
2
A
回答
4
根據MSDNCObject
主要提供以下功能:
- 支持串行
- 運行時類信息
- 對象診斷輸出
- 與集合類兼容性
所以當這些都不需要,不需要去來自CObject
。
從CObject
派生出來的時候會涉及到一些開銷(DECLARE/IMPLEMENENT_SERIAL/DYNAMIC
宏),因此可能會有比從CObject
派生更簡單的方法。
3
MFC文檔涵蓋了這一點。 CObject的文檔描述了它的功能(序列化支持,運行時類信息等)。
Hierarchy Chart是一個很好的概述,並顯示哪些類不是從CObject派生的。
您可以得出結論:不從CObject派生的類是那些不需要它提供的服務的類。原因很多:例如像CFileTime這樣的類是一種簡單的數據類型。
相關問題
- 1. 爲什麼委託類型是從MulticastDelegate類派生的,爲什麼不直接從委託類派生?
- 2. 爲什麼ObjectContext類不是從某個接口派生的?
- 3. 爲什麼MovieClip派生類不會gotoAndStop?
- 4. 如何從CFindReplaceDialog派生類? (MFC)
- 5. MFC:一個CFormView派生類
- 6. 爲什麼UserRolesPartRecord不是從Orchard CMS的ContentPartRecord派生的?
- 7. 爲什麼HttpContext不是從HttpContextBase派生的?
- 8. 從QAbstractTableModel派生類中刪除行不起作用,爲什麼?
- 9. 爲什麼我不能從多個類派生?
- 10. 爲什麼我的派生類是一個抽象類? C++
- 11. 爲什麼派生類繼承基類的私有成員?
- 12. '的CObject :: CObject的':不能訪問類中聲明私有成員 'CObject的'
- 13. 爲什麼從兩個空類派生的空類的大小是2?
- 14. 爲什麼基類私有屬性被派生類訪問?
- 15. 什麼是最左派生?
- 16. 爲什麼派生類不能引用基類?
- 17. 爲什麼創建從通用列表(.NET)派生的類?
- 18. 派生類作爲模板參數的用途是什麼?
- 19. 爲什麼我的向量不能識別我的派生類?
- 20. 爲什麼GetType()在顯式地將派生類派生到基類後返回派生類?
- 21. 爲什麼我無法從System.Enum抽象類派生?
- 22. 爲什麼Qt在基類中尋找我的插槽而不是派生的?
- 23. 定義派生類時,爲什麼基類標記爲「公共」?
- 24. 爲什麼我們不能序列化從接口派生的具體類?
- 25. 爲什麼使用派生類的基類指針
- 26. 在某些派生類中實現虛函數的正確方法是什麼?
- 27. VS2013編譯器:'CObject :: CObject':無法訪問類'CObject'中聲明的私有成員
- 28. 錯誤C2248:'CObject :: CObject':無法訪問在'CObject'類中聲明的私有成員
- 29. Eclipse中的派生文件是什麼?
- 30. 爲什麼一個Struct不能從另一個結構派生?