博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个小技巧优化C++编译速度
阅读量:3809 次
发布时间:2019-05-22

本文共 1269 字,大约阅读时间需要 4 分钟。

简述

如果有一个类A需要把其他类的对象声明为对象成员,它就需要包含其他类的头文件。如果类A包含的其他类的头文件过多,就会影响编译速度。

C++为此提供了专门的机制–前置声明法来解决这个问题。
使用前置声明法的要点有:

1. 把需要引进的类的头文件包含在本类的.cpp文件中2. 在本类的.h文件中 用“class + 类名”的形式进行前置声明。类名为需要引进的类的名字。3. 需要引进的类在头文件中用指针的形式声明其对象。

类文件

下面贴一段代码:CDlgMain是主窗口类,它需要把CDlgSysSet类和CDlgPersonalCenter类声明为自己的对象成员。方法如下所示

DlgMain.h 文件

#pragma once#include "stdafx.h"class CDlgSysSet;         //系统设置窗口class CDlgPersonalCenter; //个人中心窗口//主页窗口class CDlgMain{public:    CDlgMain();   ~CDlgMain();protected:    CDlgSysSet*             m_pDlgSysSet;    CDlgFirstPage*          m_pDlgFirstPage;};

DlgMain.cpp 文件

#include "DlgMain.h"#include "DlgSysSet.h"#include "DlgPersonalCenter.h"CDlgMain::CDlgMain(){}CDlgMain::~CDlgMain(){}

Qt中的ui文件

Qt中,把ui文件包含在.cpp文件中,在.h文件中使用ui类的指针形式,可以避免该头文件被其他文件包含时,ui文件被包含在内,从而优化编译速度。

实现方式如下:

// QtGuiClass.h 文件#pragma once#include 
// 此处对界面类的前置声明namespace Ui { class QtGuiClass; };class QtGuiClass : public QWidget{ Q_OBJECTpublic: QtGuiClass(QWidget *parent = Q_NULLPTR); ~QtGuiClass();private: // 此处使用指针形式 Ui::QtGuiClass *ui;};
// QtGuiClass.cpp 文件#include "QtGuiClass.h"#include "ui_QtGuiClass.h"QtGuiClass::QtGuiClass(QWidget *parent)    : QWidget(parent){    ui = new Ui::QtGuiClass();    ui->setupUi(this);}QtGuiClass::~QtGuiClass(){    delete ui;}

转载地址:http://jnxxn.baihongyu.com/

你可能感兴趣的文章
hadoop-----joblog读写流程
查看>>
hadoop------applog读写流程
查看>>
job运行流程(2)---ResourceManager调度job
查看>>
MVC 基本知识
查看>>
Sun 官方的 MVC 架构模式蓝图
查看>>
选购家具11个贴心建议
查看>>
Ajax基础知识
查看>>
用Java获取系统时间
查看>>
各种排序算法的分析及java实现
查看>>
wincvs的“License for this product has expired”问题解决
查看>>
CentOS一般用户和root用户之间的切换
查看>>
sublime text3空格和tab的显示
查看>>
shell-----sed命令详解
查看>>
jar包执行报ClassNotFoundException
查看>>
使用CoreText实现图文混排
查看>>
给后来人的一点参考
查看>>
站长必去的10个网站
查看>>
2004年度国产GIS软件测评结果揭晓
查看>>
回答-中国大陆30岁程序员现象的迷茫及部分“老大”的观点(转)
查看>>
创业前,首先回答好这10个问题
查看>>