QT笔记——QT中 class 和 include 包含时的区别 以及QT_BEGIN_NAMESPACE说明

我们经常会使用 include 来包含头文件

#include <QNetworkAccessManager>
#include <QNetworkReply>

改造后:

QT_BEGIN_NAMESPACE
class QNetworkAccessManager;
class QNetworkReply;
QT_END_NAMESPACE

不一样的地方:

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

优点:

使用class 类名一般是为了去除编译依赖,减少编译消耗的时
#include “xx.h” 在编译的时候把xx.h文件直接展开,所以里面的接口都能用,可以申明对象。但是classxx;这种方式就不会,你只能使用它的指针或者引用,你不能创建申明对象。
这种方式可以避免当类A和类B互相调用时候产生死循环,并节约编译时间,因为A的头文件中只是使用了B的指针对象,此时并不需要展开类B。

啥时候使用:

你在头文件中只用到一些类的指针(而非实现),那么就可以不包含这些类的头文件,而去使用类的前置声明

例如:
当我们用 class QNetworkAccessManager;时,
我们可以对其使用指针或者引用
QNetworkAccessManager *m_manager;
我们不能QNetworkAccessManager m_manager;否则如下:
在这里插入图片描述
在.cpp文件使用了这个指针 或者实例化这个对象 ,我们需要在.cpp文件中包含这个头文件

//这两个是QT的宏
QT_BEGIN_NAMESPACE
QT_END_NAMESPACE

编译之后会展开:(这个是不会加快编译速度的)

namespace QT_NAMESPACE 
{
	class QNetworkAccessManager;
	class QNetworkReply;
}

优点:

这样可以在用户自己定义的命名空间中编译整个Qt程序。
当我们改动类后,不会引发引入大量文件的重新编译。
如果我们不用QT_BEGIN_NAMESPACE和QT_END_NAMESPACE,而是直接声明,那么我们cpp文件中#include相应的头文件时,会出现冲突,因为对于一个类,如QNetworkAccessManager我们声明了两次。

链接:
include 和 class 区别
QT_BEGIN_NAMESPACE相关

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是Qt Charts模块的命名空间声明,用于将类放入命名空间,避免命名冲突。具体来说,QT_CHARTS_BEGIN_NAMESPACE表示开始一个Qt Charts命名空间,QT_CHARTS_END_NAMESPACE表示结束一个Qt Charts命名空间。在这个命名空间class QChart;表示声明了一个名为QChart的类。QChart是一个用于绘制图表的类,它是Qt Charts模块的一个核心类。使用QChart,我们可以创建各种类型的图表,比如折线图、柱状图、饼状图等等。 ### 回答2: QT_CHARTS_BEGIN_NAMESPACEQT Charts库的一个命名空间开始标记,表示接下来定义的类、函数和变量都属于这个命名空间。命名空间用于防止命名冲突,将不同的代码组织在不同的命名空间,以提高代码的可维护性和可读性。 class QChart;是在QT_CHARTS_BEGIN_NAMESPACE命名空间声明的一个类QChart。这个类是QT Charts库的一个核心类,用于创建和管理图表。 QT_CHARTS_END_NAMESPACEQT Charts库的一个命名空间结束标记,表示命名空间定义的类、函数和变量的范围到此结束。 通过使用命名空间,可以避免不同模块的类、函数和变量之间的命名冲突。同,将相关的类、函数和变量组织在同一个命名空间,可以提高代码的可读性和可维护性。 总之,QT_CHARTS_BEGIN_NAMESPACEQT_CHARTS_END_NAMESPACEQT Charts库的命名空间的开始和结束标记,用于定义和组织与图表相关的类、函数和变量。 ### 回答3: 在这段代码, QT_CHARTS_BEGIN_NAMESPACE是一个宏定义,用于标识Qt Charts命名空间的开始。这意味着在它之后声明的所有类、函数和变量都将属于Qt Charts命名空间。class QChart是在QT_CHARTS_BEGIN_NAMESPACEQT_CHARTS_END_NAMESPACE之间定义的一个类。QChart类是Qt Charts库的一个重要类,用于绘制各种类型的图表,例如折线图、散点图、柱状图等。QT_CHARTS_END_NAMESPACE是另一个宏定义,用于标识Qt Charts命名空间的结束。在它之后声明的所有类、函数和变量都将不再属于Qt Charts命名空间,除非另有指定。通过使用这种形式的宏定义,可以更方便地组织和管理多个命名空间,避免命名冲突,并提高代码的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值