原創文章,未經博主允許禁止轉載。
C++的類可以進行前向聲明。但是,僅僅進行前向聲明而沒有定義的類是不完整的,這樣的類,只能用於定義指針、引用、以及用於函數形參的指針和引用。
而不能定義對象(因為此時編譯器只知道這是個類,還不知道這個類的大小有多大),也不能訪問類的對象,任何形式的訪問都不允許(因為此時根本不知道有些什么成員)。等到類正式定義以后,就可以以各種方式使用該類了。
//前向聲明此類 class Video; //此時,只能定義指針和引用。不能定義對象,也不能以任何方式調用對象的成員 void fun1(Video* pv,Video& v1){} //正式定義該類 class Video { public: void show(); }; //現在,這個類可以隨便使用了,可以定義對象,訪問成員 void fun2(Video* pv,Video& v1,Video v2){ pv->show(); v1.show(); v2.show(); } //類的實現,前面的只能讓編譯通過,實現類成員以后,連接也可以通過了。 void Video::show()
{
cout<<"zhaojiankang"<<endl;
}
前向聲明的作用是:
1.不必在include頭文件了,相對會省點編譯時間。
2.方便的解決兩種類類型互相使用的問題。針對接口編程常常會遇到這種互相使用類型的場景。
原創文章,未經博主允許禁止轉載。