純虛擬函式(pure virtual function)與抽象類別(abstract class):
類別之中,可以定義純虛擬函式,純虛擬函式就是沒有函式內容的函式。方法為:
virtual 回傳資料型別 函式名稱() = 0;
只要一個類別中至少有一個純虛擬函式,那麼這個類別就被稱為抽象類別。一個抽象類別無法產生物件,只能用來被繼承。如:
class A
{
public:
int a;
A(int a_){a=a_;}
virtual int func_test() =0 ; // func_test是純虛擬函式
};
A A1; //這行是錯誤示範,因A是抽象類別,故無法定義物件。
註:C++規定,繼承抽象基礎類別的衍生類別,一定要將抽象基礎類別中的純虛擬函式給實做(implement)。如:
class A
{
public:
int a;
A(){}
A(int a_){a=a_;}
virtual int func_test() =0 ; //純虛擬函式
};
class B :public A //B繼承A
{
public:
int func_test(){cout<<"test success!!";} //在此,將純虛擬函式給實做
int b;
};
B B1; //如果沒有將純虛擬函式給實做,這一行會出現錯誤。
B1.func_test(); //顯示test success!!
留言列表