IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:COM

共 2 篇相关文章

IT 累计浏览 2,619

com文件与exe文件的区别

这篇讲的是 DOS 时代两种经典可执行文件格式——COM 与 EXE——的根本区别。作者没有泛泛而谈,而是直接切入技术细节,把两者从结构到表现上的不同拆解得很清楚。 核心差异在于内存模型和程序复杂度。COM 文件结构极简,更像一个原始的内存映象,运行时四个段寄存器指向同一处(PSP),整个程序被严格限制在 64K 以内,入口点固定在 100H。这决定了它适合非常小巧、无需复杂内存管理的工具。相比之下,EXE 文件则灵活得多,它拥有独立的文件头,CS、SS、IP、SP 等寄存器在加载时由 DOS 动态初始化,因此能管理多个段,程序大小理论上没有上限。代价是它需要额外的磁盘空间存放文件头,加载速度也稍慢。 文章还点出了一个有趣的实践细节:用 DEBUG 工具直接修改过的 EXE 文件,是无法原样写回磁盘的,这也从侧面反映了其结构的复杂性。最后的结论很自然:COM 追求极致的精简和加载速度,而 EXE 为更大型的程序提供了必要的扩展能力。

IT 累计浏览 3,515

C++ 中的接口继承与实现继承

这篇讲的是 C++ 中两种继承方式——接口继承与实现继承的明确区分和实际用法。 作者指出,许多开发者习惯性地将所有继承都视为“is-a”关系,从而导致设计模糊。文章核心对比了接口继承(只包含纯虚函数)与实现继承(包含非纯虚函数和状态)在语义和使用上的关键差异:接口继承强制子类实现契约,不共享代码;实现继承则允许基类提供默认行为并复用状态。 文章结合具体场景说明,比如设计一个跨平台的网络库,用接口继承(如 `ISocket`)来定义连接、读写等操作,确保各平台实现统一;而用实现继承(如 `TCPBaseSocket`)来共享 TCP 协议的通用逻辑(如重连机制、缓冲区管理)。这种清晰分层能避免“菱形继承”等复杂问题,也更符合 SOLID 原则。 文中还深入探讨了在 C++ 中如何通过 `override`、`final` 关键字和虚基类来精确控制继承关系,以及多重继承下如何只组合接口而不引入状态冲突。对于想写出更健壮、可维护的 C++ 类层次的开发者来说,这篇梳理提供了清晰的设计思路和实践指南。