在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中需要包含上面前置声明类的头文件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。