#include <QXXX> 还是 class QXXX

Qt 里经常见 #include <QXXX>class QXXX。前者是包含头文件,头文件中一般来说包含了 QXXX 类的定义,编译代码时预处理器要做 include 头文件的步骤;后者是类的前置声明,如果当前代码文件根本用不到 QXXX 的接口,只需要知道有 QXXX 这个类的存在,那么前置声明该类即可,编译速度也能得到提升。举两个示例:

  • mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
class QLabel;       // 前置声明
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    QLabel *mLabel;
};
#endif // MAINWINDOW_H
  • mainwindow.cpp
#include "mainwindow.h"
#include <QLabel>        // 包含头文件

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),
    , mLabel(new QLabel)
{
    mLabel->setParent(this);
    mLabel->setText("hello world");
}

MainWindow::~MainWindow()
{
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。