類的前向宣告

2021-07-10 08:35:32 字數 582 閱讀 8644

在我們看一些c++標頭檔案的時候,經常可以看到某些類的宣告但卻找不到定義。如:

class abc;  //僅僅宣告,沒有定義

通常後面還會有定義指向這個型別的指標或引用,如:

abc  *pointer;

abc &pointer;

這種形式稱之為類的前向宣告/引用。在宣告之後,定義之前,類abc是乙個不完全型別(incompete type),即已知abc是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用:

(1) 不能定義abc類的物件。

(2) 可以用於定義指向這個型別的指標或引用。

(3) 用於宣告(不是定義)使用該型別作為形參或者返回型別的函式。

使用前向宣告主要是為了避免新增一堆#include,因為:

(1) 不必要的標頭檔案會增加編譯時間。

(2) 混亂隨意的#include可能導致重複#include,從而出現編譯錯誤。

類前向宣告

class a a void del a ptr int main 正常執行,delete p 先執行類析構函式,通知系統這塊記憶體上的資料已經無效無需維護了,然後使用operator delete 釋放這塊記憶體 class a void del a ptr class a a int main ...

類的前向宣告

class person void show1 person k cout上述 在友元函式的類外實現中使用了該類,則需在之前宣告,上述 已做宣告。但是上述 依然會報錯,因為類的提前宣告,編譯器只是知道了person這是乙個類,該類的具體細節 例如成員變數 編譯器並不知道,所以此時person又叫做不...

C 類前向宣告

在乙個群內看到的訊息,關於類的前向宣告 宣告乙個foo類,這個宣告,有時候也叫做前向宣告 forward declaration 在宣告完這個foo類之後,定義完這個foo類之前的時期,foo類是乙個不完全的型別 incomplete type 也就是說foo類是乙個型別,但是這個型別的一些性質 比...