c++ 前置宣告詳解及例項
一般的前置函式宣告
見過最多的前置函式宣告,基本格式**如下:
#include
using namespace std;
void fun(char ch, int *pvalue, double dvalue);
void main()
void fun(char ch, int *pvalue, double dvalue)
很好理解,不做贅述。
自定義型別的前置宣告
自定義型別的前置宣告,由於編譯器不知道型別的大小,所以不可以宣告型別的物件。只可以利用型別宣告指標和引用。
**如下:
/** 自定義型別前置宣告
*/#include www.cppcns.comam>
using namespace std;
class b;
class a
~a()
void funa()
};class b
~b()
void doanything()
};void main()
如上,利用前置型別的指標想呼叫其成員函式,會報編譯錯誤!那麼,腫麼辦?請看下文。
宣告和實現分離
**如下,宣告標頭檔案:
/** testforwarddeclar.h
*/#ifndef d_testforwarddeclar_h_
#define d_testforwarddeclar_h_
#include
class b; // 前置宣告自定義型別
class a
;class b
;#endif
**如下,定義檔案:
/** testforwarddeclar.cpp
*/#include "testforwarddeclar.h"
#include
a::a (b *pbpara)
: m_nint(100)
, m_nrint(m_nint)
, m_pint(null)
, m_pb(null)
, m_b((null == pbpara) ? (*m_pb) : (*pbpara))
a::~a()
void a::funa()
b::b (int n) : m_n(n)
b::~b()
void b::doanything()
**如下:測試檔案:
#include "testforwarddeclar.h"
程式設計客棧
void main()
編譯成功,執行結果是期望效果。
總結自定義型別前置宣告時,只可以利用型別名宣告指標和引用變數(謹記不可以宣告物件或newxmuoex 物件,均因為型別大小不確定,編譯器無能為力)。
若需要利用指標或引用呼叫前置型別的介面,必須按照宣告和實現分離的方式進行編碼。
本文標題: c++ 前置宣告詳解及例項
本文位址:
詳解C 前置宣告
前置宣告是c c 開發中比較常用的技巧,主要用在三種情形 前置宣告作用 根據其用途,前置宣告的主要作用為 前兩種用途好理解,第三種稍微複雜點,但卻是前置宣告最重要的用途。其解決類a包含類b,同時類b包含類a的依賴問題。迴圈依賴一般是設計層面的問題,可通過介面 引入輔助類等手段化解。前置宣告也能解決,...
C 前置宣告
特點 被宣告的類不用重新編譯,節省編譯時間 比如a包含乙個指向b的指標,b包含a的乙個例項,這種情況下,使用前置宣告。易錯的點 class date class task1 因為分配器為d分配記憶體的時候,必須要知道 d的大小 主要應用場景是兩個標頭檔案相互包含的場景,建議僅將前置宣告用於解決迴圈引...
C 前置宣告
一般的前置函式宣告 見過最多的前置函式宣告,基本格式 如下 1 include 2 using namespace std 34 void fun char ch,int pvalue,double dvalue 56 void main 714 15void fun char ch,int pva...