2017-04-19 224 views
1

如何聲明抽象類?在C++中聲明抽象類

例如,我知道這是使用虛擬關鍵字,如:

class test{ 
public: 
virtual void test()=0; 
} 

我的問題是我可以抽象測試類也是這樣嗎?如果不是,爲什麼和

virtual class test{ 
} 
+0

你爲什麼想要?沒有方法的課程絕對沒有意義。 – meagar

+0

我想確認一下,我是否可以申報如上所述的抽象類 – Faceless

+0

這是不可能的,你不應該這樣做。這個不成立。 – meagar

回答

2

我的問題是如何能我抽象測試類也是這樣嗎?

不,你不能。根據定義,抽象類是至少包含一個純虛函數的類。

0

您的代碼:

class test 
{ 
virtual void test()=0; 
} 

創建一個抽象類。
它包含一個或多個純虛函數:

virtual void test()=0;//is a pure virtual function/method 

一個抽象類是一類定義,其中包含一個或多個純虛函數。

您不能創建抽象類的實例,因爲它不是一個完整的定義。

您的代碼:

virtual class test 
{ 
    } 

是荒謬的,沒有上升到一個抽象類的定義,因爲它不包含一個或多個純虛函數,是一種不當使用「虛擬」關鍵字...

您可能會被「虛擬基類」這個引用「抽象類」語義的誤導性方式的話題所困惑。

製作抽象類的目的是將其繼承到派生類中,併爲純虛函數提供完整的定義。

抽象類可以包含許多完全定義的方法,但只有一個純粹的虛擬方法會使其抽象。簡單的例子是誤導。抽象類是常見的,並且通常是對(芭芭拉)Liskov替換原則引發的問題的「修正」。

Dr t