#include类的头文件与直接写class加类名有何区别

简介: 在写 头文件的时间 经常会 有一些 class QFile 等这类 看似 是声明的东西..例如下面 #ifndef WINDOW_H#define WINDOW_H QT_BEGIN_NAMESPACEclass QTcpServer;class QTcpSocket;class QProgr...

在写 头文件的时间 经常会

有一些 class QFile 等这类 看似 是声明的东西..例如下面

#ifndef WINDOW_H
#define WINDOW_H

QT_BEGIN_NAMESPACE
class QTcpServer;
class QTcpSocket;
class QProgressBar;
class QLabel;
class QDialogButtonBox;
class QFile;
QT_END_NAMESPACE
//code end
class QAction;
class QCheckBox;
...

如果没有 声明 将会 出现类似下面的错误

ISO C++ forbids declaration of 'QFile' with no type

那么 这个是做什么用的呢???? 
是因为在头文件里面只有这些类的指针申明,并没有真正实例化,在这个头文件对应的cpp文件里面应该会
#include < QDialogButtonBox >
#include < QFile >
... 
在cpp文件里面才会正真实例化这些类。
其 实直接在头文件里面#include < QDialogButtonBox> #include< QFile>也是可以的,像它这样做,好像是可以降低各个文件编译时的关联度,不会在改动了一下部分类的时候,引发其他大量文件的重新编译,在做小工程的时候没什么区别,但是做大了,编译一次需要好几个小时的时候,这样做的优势就显现出来了

class   类名只是声明存在这么一个类,但是通过这个声明无法得到任何关于此类的具体信息。这样你可以在其他使用到的地方声明一个该类型的指针。 
include头文件则是将整个该头文件与使用到的地方关联起来。 

使用class   类名一般是为了去除编译依赖,减少编译消耗的时

#include "xx.h" 在编译的时候把xx.h文件直接展开,所以里面的接口都能用,可以申明对象。但是class xx;这种方式就不会,你只能使用它的指针或者引用,你不能创建申明对象。

目录
相关文章
|
Linux C语言
RISC-V Linux汇编启动过程分析
RISC-V Linux汇编启动过程分析
|
Ubuntu Unix Linux
成功解决ERROR: Unable to find the development tool `cc` in your path; please make sure that you have the
成功解决ERROR: Unable to find the development tool `cc` in your path; please make sure that you have the
成功解决ERROR: Unable to find the development tool `cc` in your path; please make sure that you have the
|
12月前
|
Ubuntu 机器人 语音技术
语音识别与语音控制
【10月更文挑战第4天】硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂未放入,请根据内容进行适当处理。 cd /userdata/dev_ws/ # 配置TogetheROS环境 source /opt/tros/setup.bash # 从tros.b的安装路径中拷贝出运行示例需要的配置文件。 cp -r /opt/tros/lib/hobot_audio/config/ . # 加载
154 4
|
监控 前端开发 JavaScript
6个顶级SpringCloud微服务开源项目,企业开发必备!
6个顶级SpringCloud微服务开源项目,企业开发必备!
4933 0
6个顶级SpringCloud微服务开源项目,企业开发必备!
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制是一个重要而复杂的问题。
微信小程序作为业务拓展的新渠道,其全栈开发中的身份认证与授权机制至关重要。本文概览了身份认证方法,包括手机号码验证、微信及第三方登录;并介绍了授权机制,如角色权限控制、ACL和OAuth 2.0。通过微信登录获取用户信息,利用第三方登录集成其他平台,以及实施角色权限控制和ACL,开发者能有效保障小程序的安全性和提供良好用户体验。此外,还强调了在实现过程中需注重安全性、用户体验和合规性。
515 0
|
存储 算法 数据挖掘
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
|
安全 编译器 C++
【C++中的const函数】何时与如何正确声明使用C++ const函数(一)
【C++中的const函数】何时与如何正确声明使用C++ const函数
224 0
|
开发框架 .NET 数据库
D8016 “/ZI”和“/clr”命令行选项不兼容
D8016 “/ZI”和“/clr”命令行选项不兼容
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
357 0
|
存储 传感器 数据采集
嵌入式系统入门基础知识分析(一)
嵌入式系统入门基础知识分析(一)
503 0