前向引用宣告

2021-06-27 13:21:54 字數 1406 閱讀 1206

2008-04-16 16:04:20

類間的交叉引用的情況, 需要前向引用宣告. 

前向引用宣告不能宣告該類的物件, 也不能在內聯成員函式中使用該類的物件, 只能宣告該類的指標, 引用, 函式形參和返回型別.

// right.h /

// no #include "left.h" 

class cleft;// 前向宣告cleft

class cright

// error

cleft r_f3();     // ok

cleft *m_pleft;     // ok

cleft m_left;     // error

}// right.cpp ///

#include "right.h"

#include "left.h"

void cright::r_f(cleft *pl1, cleft &l2, cleft l3)

cleft cright::r_f3()

// left.h //

#include "right.h"

class cleft

cright m_right;

}注意命名空間中類的前向宣告

// right.h /

// no #include "left.h" 

namesapce l_space

;// 前向引用宣告

namesapce r_space

// error

cleft r_f3();     // ok

cleft *m_pleft;     // ok

cleft m_left;     // error

};};

// right.cpp ///

#include "right.h"

#include "left.h"

using namesapce l_space;  // using命名空間

void r_space::cright::r_f(cleft *pl1, cleft &l2, cleft l3)

cleft r_space::cright::r_f3()

// left.h //

#include "right.h"

namespace l_left

r_space::cright m_right;

};};

但是: 類應該是高內聚, 低耦合的, 所以應該盡量避免這樣的設計.

另, 關於命名空間和作用域還有些需要弄清楚, to be continue....

- by kevin.darkelf 20080416

原**:

前向引用宣告

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

C 前向引用宣告

c 當中當有兩個類需要相互引用的時候,不管哪乙個類宣告在前,都會導致類未定義的編譯錯誤。這時候就需要用到類的前向引用宣告,下面的例子中,類a中需要使用類b,但是類b的完整宣告是在a之後,這時在類a的完整宣告之前加一句class b 告訴編譯器b是乙個類名,之後在類a中就可以使用類b作為函式引數了。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 ...