C 類前向宣告

2021-06-20 21:21:19 字數 914 閱讀 9113

在乙個群內看到的訊息,關於類的前向宣告:

宣告乙個foo類,這個宣告,有時候也叫做前向宣告(forward declaration),在宣告完這個foo類之後,定義完這個foo類之前的時期,foo類是乙個不完全的型別(incomplete type),也就是說foo類是乙個型別,但是這個型別的一些性質(比如包含哪些成員,具有哪些操作)都不知道。

因此這個類的作用也很有限.

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

(2)可以用於定義指向這個型別的指標或引用。(很有價值的東西)

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

正因為有前向宣告的存在,我們在很多時候可以簡便的做一些事情。

在c++中,如果要為類編寫標頭檔案的話,一般是要#include一堆標頭檔案的,但利用前向宣告和c++編譯器的特性,其中大部分是不需要的。

c++編譯器做的事情主要是:1.掃瞄符號;2.確定物件大小。

所以很多時候並不需要將類都include進來。

比如:(1)由於所有物件型別的引用所占用的空間都是相同大的,所以c++編譯器很好確認物件大小。

class string;

class sample

; 這裡只需要做乙個string的前向宣告就可以了,不需要#include

(2)由於所有型別的指標也是相同大小的。所以與(1)類似,也可以只做前向宣告就好。

(3)宣告成員函式的形參或者是返回型別,也可以利用前向宣告的性質。

class string;

class foo;

class sample

; 這裡,我根本沒有定義乙個foo類,但是還是可以這樣用,因為成員函式不佔類物件的大小,所以c++編譯器還是可以確定物件的大小。

前向宣告的作用在於告訴編譯器這個乙個在別的地方定義的型別。這樣c++編譯器就能生成正確的符號表了。

類前向宣告

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

C 類的前向宣告

前向宣告 在計算機程式設計中,前向宣告是指宣告識別符號 表示程式設計的實體,如資料型別 變數 函式 時還沒有給出完整的定義。即可以宣告乙個類而不定義它,只宣告類但不知道類的成員變數 函式等具體細節。如 class b class a 這裡的class b只有宣告沒有定義,是乙個不完全型別 incom...

c 前向宣告

對類a和類b 1 a用到了b的型別,則b要在a之前宣告。如果此時b又用到了a,則可以在a的完整定義前,前向宣告b 2 a的方法用的了b的方法,則a的方法的實現應該在b的方法實現之後。3 若a.op 用到了b.op 且b.op 又用到了a.op 形成了死鎖,此時可借助第三個類,即中介者模式 4 所有兩...