在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中須要包含上面前置聲明類的頭文件。