第七章- 前置的类声明的好处

lcdrange.h:

#ifndef LCDRANGE_H
#define LCDRANGE_H
#include <QWidget>

class QSlider;

class LCDRange : public QWidget
{
    Q_OBJECT
public:
    explicit LCDRange(QWidget *parent = 0, Qt::WindowFlags name = Qt::WindowFlags());
    int value() const;

public slots:
    void setValue(int);

signals:
    void valueChanged(int);

private:
    QSlider *slider;
};

#endif // LCDRANGE_H

因为我们在类的界面中不需要QSlider,仅仅是在实现中,我们在头文件中使用一个前置的类声明,并且在.cpp文件中包含一个QSlider的头文件。

这段话的意思是,在类的界面(通常是头文件)中,如果不需要直接使用到 QSlider,可以通过前置类声明的方式来声明该类,而不必包含 QSlider 的头文件。这样做的好处是,当 QSlider 的头文件发生变化时,只有包含了 QSlider 头文件的文件需要重新编译,而那些仅仅使用了前置声明的文件则无需重新编译。

具体解释如下:

  1. 前置类声明 vs 头文件包含:在头文件中使用前置类声明(例如 class QSlider;)只是告诉编译器该类的存在,而不需要知道其详细实现。相比之下,包含 QSlider 的头文件(例如 #include <QSlider>)会导致编译器完全展开该类的定义,从而增加编译依赖和编译时间。
  2. 减少重新编译的影响:当一个头文件(比如 <QSlider>)发生变化时,所有直接或间接包含该头文件的文件都需要重新编译,因为它们可能依赖于这些头文件中定义的内容。通过前置类声明,如果类的实现不在当前文件中,而只是在 .cpp 文件中引入 QSlider 的头文件,那么只有 .cpp 文件需要重新编译,从而减少了整个项目的重新编译时间。
  3. 编译效率提升:对于大型项目,尤其是涉及多个文件和大量依赖的项目,通过精确控制头文件的包含和使用前置声明,可以显著提高编译效率。这种优化可能会使编译时间减少一半或更多,因为大部分文件无需因为头文件的改动而重新编译,只有必要的文件会受到影响。

综上所述,通过在类的界面中使用前置类声明,可以避免不必要的编译依赖,从而加快整体编译过程,特别是在处理大型项目时显得尤为重要和有效。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值