C 中的前向宣告

2021-08-21 22:18:30 字數 1050 閱讀 8783

1.前向宣告的好處

1)不必要的#include會增加編譯時間

2)混亂隨意的#include可能導致迴圈#include,可能會出現編譯錯誤

2.定義

可以宣告乙個類而不定義它。這個宣告有時候被成為前向宣告。不完全型別只能以有限方式使用,不能定義該型別的物件,不完全型別只能適用於:

a.定義指向型別的指標及引用。

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

class

a;class

b;

**3.前向宣告的限制

1)不能定義前向宣告類的物件

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

3)用於宣告使用該型別作為形參或者返回型別的函式。(成員函式不佔類物件的大小)**

4.例項

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

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

比如:

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

class

string;

class sample

;

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

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

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

class string;  

class foo;

class sample

;

這裡,我根本沒有定義乙個foo類,但是還是可以這樣用,因為成員函式不佔類物件的大小,所以c++編譯器還是可以確定物件的大小(注:換句話說是否只要c++編譯器能確定物件大小即可)。

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

c 中的前向宣告

前向宣告 可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete type 即已知screen是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完...

C 中的前向宣告

前向宣告 可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete type 即已知screen是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完...

c 中的前向宣告

1 不必要的 include 會增加編譯時間.2 混亂隨意的 include可能導致迴圈 include,可能出現編譯錯誤.可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete ty...