轉載:https://www.cnblogs.com/qq78292959/archive/2013/01/12/2857243.html
純虛類有以下特征:
含有一個純虛函數的類,叫做純虛類。純虛類不可以定義對象。
我個人覺得這個說法應該就是把純虛類的主要特點說明了:
1、只要有一個純虛函數。就稱為純虛類。
所以如果子類沒有實現純虛函數,相當子類也有純虛函數,所以子類也是純虛類。
2、其他類的定義與使用方式都與一般的類差不多。大致有如下地方:
純虛類可以有成員變量 (可以)
純虛類可以有普通的成員函數(可以)
純虛類可不可以有其他虛函數(可以)
純虛類可不可以有構造函數 (可以)
純虛類可不可以又帶有參數的構造函數? (可以)
可不可以在純虛類的派生類的構造函數中顯式調用純虛類的帶參數構造函數(可以)
3、使用方式上:不可以定義一個對象。
下面是另外一篇文章中說的說法:(純虛類也稱為抽象類)
帶有純虛函數的類稱為抽象類。抽象類是一種特殊的類,它是為了抽象和設計的目的而建立的,它處於繼承層次結構的較上層(而不是絕對的上層,也有可能是中層,甚至底層?)。抽象類是不能定義對象的,在實際中為了強調一個類是抽象類,可將該類的構造函數(設置為protected)說明為保護的訪問控制權限。
抽象類的主要作用是將有關的組織在一個繼承層次結構中,由它來為它們提供一個公共的根(其實不一定是根),相關的子類是從這個根派生出來的。
抽象類刻畫了一組子類的操作接口的通用語義,這些語義也傳給子類。一般而言,抽象類只描述這組子類共同的操作接口,而完整的實現留給子類。
抽象類只能作為基類來使用(大多數情況是其他類的基類,但是抽象類本身也有可能是子類),其純虛函數的實現由派生類給出。如果派生類沒有重新定義純虛函數,而派生類只是繼承基類的純虛函數,則這個派生類仍然還是一個抽象類。如果派生類中給出了基類純虛函數的實現,則該派生類就不再是抽象類了,它是一個可以建立對象的具體類了。
4、純虛類一般是做為接口使用(這里要好好看設計模式了)