在有時候因為類太大,需要在類在後面定義;
例如:
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已經被完整的定義了。