Qt class 前置聲明


在Qt開發項目中,經常會用到各種庫,但是一般在.h文件中進行某類型變量定義時,都會對其類型的class進行聲明,如下面代碼所示:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtNetwork>
class QTcpSocket;            // 前置聲明                                

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();
    void newConnection();
    void readMessage();
    void sendMessage();
    void displayError(QAbstractSocket::SocketError);  
private: Ui::Widget *ui; QTcpSocket * tcpSocket; QString message; quint16 blockSize; }; 
#endif // WIDGET_H

這是widget.h里面的代碼,在里面用到了QTcpSocket類型,並對其class進行前置聲明。

其主要作用:告訴編譯器用到的這些類已經存在,並且不需要知道這些類的完整定義。

         原因:在.h文件中主要是簡單地定義了指向這些類的對象的指針,而並沒有涉及到該類的其他方面。

         好處:避免了頭文件被其他文件多次包含,提高了編譯速度。

   編程原則:如果頭文件中一些聲明不需要包含其頭文件時,盡量在頭文件中使用類前置聲明。盡量不要在頭文件中包含另外的頭文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM