C 前向引用宣告

2021-10-24 15:23:55 字數 606 閱讀 7634

c++當中當有兩個類需要相互引用的時候,不管哪乙個類宣告在前,都會導致類未定義的編譯錯誤。

這時候就需要用到類的前向引用宣告,下面的例子中,類a中需要使用類b,但是類b的完整宣告是在a之後,這時在類a的完整宣告之前加一句class b;告訴編譯器b是乙個類名,之後在類a中就可以使用類b作為函式引數了。

classb;

//前向引用宣告

classa;

class

b;

但是,這並不是萬能的,雖然有了前向引用宣告,但是並不能把這個宣告的類用來定義變數,因為前向引用宣告只是告訴編譯器有這麼乙個類,但是並沒有告訴編譯器這個類的具體實現細節(如這個類佔多少個位元組)。看下面的例子就會比較清楚,雖然有了fred類的前向引用宣告,但是並不知道實現細節,所以在類barney中呼叫類fred定義成員變數的時候就會報錯。

class

fred

;//前向引用宣告

class

barney

;class

fred

;

前向引用宣告

2008 04 16 16 04 20 類間的交叉引用的情況,需要前向引用宣告.前向引用宣告不能宣告該類的物件,也不能在內聯成員函式中使用該類的物件,只能宣告該類的指標,引用,函式形參和返回型別.right.h no include left.h class cleft 前向宣告cleft clas...

前向引用宣告

2008 04 16 16 04 20 類間的交叉引用的情況,需要前向引用宣告.前向引用宣告不能宣告該類的物件,也不能在內聯成員函式中使用該類的物件,只能宣告該類的指標,引用,函式形參和返回型別.right.h no include left.h class cleft 前向宣告cleft clas...

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 所有兩...