zoukankan      html  css  js  c++  java
  • 能依赖声明,就不要依赖定义

    使用前置声明(forward declarations)尽量减少.h文件中#include的数量。

    当一个头文件被包含的同时也引入了一项新的依赖(dependency),只要该头文件被修改,代码就要重新编译。如果你的头文件包含了其他头文件,这些头文件的任何改变也将导致那些包吨含你的头文件的代码重新编译。因此,我们应该尽量少的包含头文件,尤其是那些包含在其他头文件中的。

    使用前置声明可以显著减少需要包含的头文件数量。举例说明:头文件中用到类File,但不需要访问File的声明,则头文件中只需前置声明class File;无需#include "file/base/file.h"。

    在头文件如何做到使用类Foo而无需访问类的定义?

    1) 将数据成员类型声明为Foo *或Foo &;

    2) 参数、返回值类型为Foo的函数只是声明(但不定义实现);

    3) 静态数据成员的类型可以被声明为Foo,因为静态数据成员的定义在类定义之外。

    另一方面,如果你的类是Foo的子类,或者含有类型为Foo的非静态数据成员,则必须为之包含头文件。 有时,使用指针成员(pointer members,如果是scoped_ptr更好)替代对象成员(object members)的确更有意义。然而,这样的做法会降低代码可读性及执行效率。如果仅仅为了少包含头文件,还是不要这样替代的好。

  • 相关阅读:
    linux下vim的安装及其设置细节
    vm虚拟机下ubuntu连接上ssr
    文件写入-结构体排序
    利用链表进行报数游戏
    链表——尾插法
    C#设计模式总结
    C#设计模式(20)——策略者模式(Stragety Pattern)
    Autofac在项目中应用的体会,一个接口多个实现的情况
    C#设计模式(1)——单例模式
    jquery.js与sea.js综合使用
  • 原文地址:https://www.cnblogs.com/linmeng/p/linmeng.html
Copyright © 2011-2022 走看看