1

在Qt示例代码中,头文件有如下内容
QT_BEGIN_NAMESPACE
class QAction;
class QMenu;
class QPlainTextEdit;
QT_END_NAMESPACE

在编译时就会变成这样:
namespace QT_NAMESPACE
{
class QAction;
class QMenu;
class QPlainTextEdit;
}

QT_NAMESPACE是Qt自己定义的命名空间。这样可以在用户自己定义的命名空间中编译整个Qt程序。
目前有些旧编译器不支持,不过影响不大
至于所谓加快编译,主要是前置声明的作用,与命名空间没关系

使用场景为:头文件中用到类指针(而非实现),因为不涉及实例化,可以不包含这些类的头文件,只包含类的前置声明

优点为:    头文件的内容少,不必每次都包含很多头文件,避免程序中各种头文件多次包含导致解析耗时编译慢,
            据说在大型程序作用明显
            
缺点为:    在实现文件.CPP中需要包含上面前置声明类的头文件。


123654_
81 声望5 粉丝

君子曰:学不可以已。