DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在写 头文件的时间 经常会

有一些 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;这种方式就不会,你只能使用它的指针或者引用,你不能创建申明对象。

posted on   DoubleLi  阅读(2019)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示