類聲明與類定義


一旦遇到右花括號,類的定義就結束了。並且一旦定義了類,那以我們就知道了所有的類成員,以及存儲該類的對象所需的存儲空間。在一個給定的源文件中,一個類只能被定義一次。如果在多個文件中定義一個類,那么每個文件中的定義必須是完全相同的。

將類定義在頭文件中,可以保證在每個使用類的文件中以同樣的方式定義類。使用頭文件保護符(header guard),來保證即使頭文件在同一文件中被包含多次,類定義也只出現一次。

可以聲明一個類而不定義它:

class Screen; // declaration of the Screen class

這個聲明,有時稱為前向聲明(forward declaraton),在程序中引入了類類型的 Screen。在聲明之后、定義之前,類 Screen 是一個不完全類型(incompete type),即已知 Screen 是一個類型,但不知道包含哪些成員。不完全類型(incomplete type)只能以有限方式使用。不能定義該類型的對象。不完全類型只能用於定義指向該類型的指針及引用,或者用於聲明(而不是定義)使用該類型作為形參類型或返回類型的函數。

在創建類的對象之前,必須完整地定義該類。必須定義類,而不只是聲明類,這樣,編譯器就會給類的對象預定相應的存儲空間。同樣地,在使用引用或指針訪問類的成員之前,必須已經定義類。

為類的成員使用類聲明

只有當類定義已經在前面出現過,數據成員才能被指定為該類類型。如果該類型是不完全類型,那么數據成員只能是指向該類類型的指針或引用。

因為只有當類定義體完成后才能定義類,因此類不能具有自身類型的數據成員。然而,只要類名一出現就可以認為該類已聲明。因此,類的數據成員可以是指向自身類型的指針或引用:

class LinkScreen { Screen window; LinkScreen *next; LinkScreen *prev; };

類的前身聲明一般用來編寫相互依賴的類。


免責聲明!

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



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