【问题标题】:Inheritance and Includes继承和包含
【发布时间】:2018-02-20 04:34:53
【问题描述】:

假设我有 2 节课。一个是BaseClass,一个是DerivedClass,是BaseClass 的派生类。我需要能够在另一个文件中创建这两个类的对象。通过使用#include 语句将派生类包含在新文件中,我可以直接访问派生类和间接访问基类(因为派生类将其包含在其文件中)。使用这种间接“访问”基类的方法更好,还是直接将其与派生类一起包含在文件中?

【问题讨论】:

    标签: c++ inheritance include


    【解决方案1】:

    一般建议是包括您使用的内容

    如果您正在编写 API 规范,并且该规范没有明确详细说明类的基派生性质,那么对该关系的任何更改都可能会破坏您所依赖的文件使用的包含。

    也请参阅here

    如果您确定 BaseClass 将始终是 DerivedClass 的基础,那么可能几乎不需要同时包含两者,但为了清楚起见,我还是会继续这样做,这表明您的意图。

    【讨论】:

    • 这完全有道理。虽然我编写了这两个类并且知道它们在这方面不会改变,但直接包含它似乎更有意义。
    • 值得一提的是,您应该始终使用标题保护。
    • 值得注意的是,使用包含保护,同一文件的多个包含的影响可能很小。
    • 我不太确定:即使使用#ifndef #define,预处理器仍然需要解析整个文件才能找到#endif
    【解决方案2】:

    包含所有需要的标头而不是依赖传递性有两个优点:

    1. 如果你的头文件将被重构,你将不需要更改你的 cpp 文件。

    2. 它清楚地表明了您对其他开发人员的意图。

    【讨论】:

    • include 语句揭示了什么意图?这只是一个必要的邪恶。
    猜你喜欢
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多