QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的做用

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

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

QT_NAMESPACE是Qt本身定义的命名空间。这样能够在用户本身定义的命名空间中编译整个Qt程序。
目前有些旧编译器不支持,不过影响不大
至于所谓加快编译,主要是前置声明的做用,与命名空间不要紧

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

优势为:    头文件的内容少,没必要每次都包含不少头文件,避免程序中各类头文件屡次包含致使解析耗时编译慢,
            听说在大型程序做用明显
            
缺点为:    在实现文件.CPP中须要包含上面前置声明类的头文件。