2008年8月29日 星期五

虛擬函式 與 純虛擬函式

虛擬函式跟一般函式一樣,唯一的差別是在於使用再"多型"上,當一個子類別想要使用和父類別相同名稱的函式時,也就是做覆寫的動作時,必須在父類別中將該函式前面加上 virtual 用以辨識,表示該函式是可以被覆寫的,而此函式稱為虛擬函式。
class A
{
 public:
  //一般函式
 int Test()
 {
  return 0;
 }
}

class A
{
 public:
  //虛擬函式
 virtual int Test()
 {
  return 0;
 }
}

另外有另一種不提供函式內容的虛擬函式稱為"純"虛擬函式,只要類別中有一個以上的純虛擬函式,該類別就稱為抽象類別,抽象類別只能被拿來繼承,無法直接產生物件(實例),而繼承該類別的類別,必須實做那些函式。純虛擬函式與虛擬函式的宣告方式差異,除了純虛擬含是不定義函式內容以外,必須在函式後面加上=0
class A
{
 public:
 
//純虛擬函式
 virtual int Test()=0;
}

沒有留言:

張貼留言