通常,大多數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. 爲什麼TextElemt類不是從Control類派生的?
- 3. 爲什麼ObjectContext類不是從某個接口派生的?
- 4. 爲什麼建議從Python派生Exception而不是BaseException類?
- 5. 爲什麼MovieClip派生類不會gotoAndStop?
- 6. 爲什麼Fn是從FnMut派生的(它是從FnOnce派生的)?
- 7. 如何從CFindReplaceDialog派生類? (MFC)
- 8. MFC:一個CFormView派生類
- 9. 爲什麼UserRolesPartRecord不是從Orchard CMS的ContentPartRecord派生的?
- 10. 爲什麼HttpContext不是從HttpContextBase派生的?
- 11. 爲什麼我不能從多個類派生?
- 12. 從QAbstractTableModel派生類中刪除行不起作用,爲什麼?
- 13. 爲什麼我的派生類是一個抽象類? C++
- 14. 什麼是C++深入派生類?
- 15. 爲什麼派生類繼承基類的私有成員?
- 16. '的CObject :: CObject的':不能訪問類中聲明私有成員 'CObject的'
- 17. 爲什麼我的派生類不能傳遞給基類?
- 18. 爲什麼從兩個空類派生的空類的大小是2?
- 19. 爲什麼子控件不會出現在MFC派生的CWnd中
- 20. 爲什麼基類私有屬性被派生類訪問?
- 21. 什麼是最左派生?
- 22. 派生類作爲模板參數的用途是什麼?
- 23. 爲什麼在派生類中找不到基類成員C++
- 24. 爲什麼派生類不能引用基類?
- 25. 爲什麼派生類不能訪問基類靜態方法?
- 26. 爲什麼創建從通用列表(.NET)派生的類?
- 27. 爲什麼我的向量不能識別我的派生類?
- 28. 再次但是沒有解決之道:錯誤C2248:「CObject的:: CObject的」:不能訪問類中聲明「CObject的」
- 29. static_cast從派生類到基類時會發生什麼?
- 30. 爲什麼Visual Studio的IntelliSense不適用於派生類?