#include與直接寫class加類名有何區別

來源:互聯網
上載者:User

http://blog.sina.com.cn/s/blog_8e5c2c1901012pgu.html

 

在寫 標頭檔的時間 經常會

有一些 class QFile 等這類 看似 是聲明的東西..例如下面

#ifndef WINDOW_H
#define WINDOW_H

QT_BEGIN_NAMESPACE
class QTcpServer;
class QTcpSocket;
class QProgressBar;
class QLabel;
class QDialogButtonBox;
class QFile;
QT_END_NAMESPACE
//code end
class QAction;
class QCheckBox;
...

如果沒有 聲明 將會 出現類似下面的錯誤

ISO C++ forbids declaration of 'QFile' with no type

那麼 這個是做什麼用的呢????
是因為在標頭檔裡面只有這些類的指標申明,並沒有真正執行個體化,在這個標頭檔對應的cpp檔案裡面應該會
#include < QDialogButtonBox >
#include < QFile >

在cpp檔案裡面才會正真執行個體化這些類。
其 實直接在標頭檔裡面#include < QDialogButtonBox> #include< QFile>也是可以的,像它這樣做,好像是可以降低各個檔案編譯時間的關聯度,不會在改動了一下部分類的時候,引發其他大量檔案的重新編譯,在做小工程的時候沒什麼區別,但是做大了,編譯一次需要好幾個小時的時候,這樣做的優勢就顯現出來了

class  類名只是聲明存在這麼一個類,但是通過這個聲明無法得到任何關於此類的具體資訊。這樣你可以在其他使用到的地方聲明一個該類型的指標。
include標頭檔則是將整個該標頭檔與使用到的地方關聯起來。

使用class  類名一般是為了去除編譯依賴,減少編譯消耗的時

#include "xx.h" 在編譯的時候把xx.h檔案直接展開,所以裡面的介面都能用,可以申明對象。但是class xx;這種方式就不會,你只能使用它的指標或者引用,你不能建立申明對象。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.