在有時候因為類太大,需要在類在後面定義;
例如:
class Y{ void f(X); }; class X{ //一些成員數據和函數 };
//error因為c++要求任何一個變量在引用之前必須聲明。,在上述定義中我們可以調換兩者的順序來實現。
但是如果形成了循環?
class X{ void f1(Y) }; class Y{ void f(X); };
//error
那麼我們可以通過在上述中先聲明?
class Y; class X{ void f1(Y) //error }; class Y{ void f(X); };
所以我們通過將函數f1()中的參數Y改為
class Y; class X{ void f1(Y*) }; class Y{ void f(X); };
//right
但是這裡函數f2()就可以使用類X作為參數 ,因為類X已經被完整的定義了。