C++中的虛函數和純虛函數用法

 1. 虛函數和純虛函數能夠定義在同一個類(class)中,含有純虛函數的類被稱爲抽象類(abstract class),而只含有虛函數的類(class)不能被稱爲抽象類(abstract class)。函數

   2. 虛函數能夠被直接使用,也能夠被子類(sub class)重載之後以多態的形式調用,而純虛函數必須在子類(sub class)中實現該函數才能夠使用,由於純虛函數在基類(base class)
只有聲明而沒有定義。this

   3. 虛函數和純虛函數均可以在子類(sub class)中被重載,以多態的形式被調用。spa

   4. 虛函數和純虛函數一般存在於抽象基類(abstract base class -ABC)之中,被繼承的子類重載,目的是提供一個統一的接口。繼承

   5. 虛函數的定義形式:virtual    {method body} 
       純虛函數的定義形式:virtual    { } = 0; 
      在虛函數和純虛函數的定義中不能有static標識符,緣由很簡單,被static修飾的函數在編譯時候要求前期bind,然而虛函數倒是動態綁定(run-time bind),並且被二者修飾的函數生命週期(life recycle)也不同。
   6. 若是一個類中含有純虛函數,那麼任何試圖對該類進行實例化的語句都將致使錯誤的產生,由於抽象基類(ABC)是不能被直接調用的。必須被子類繼承重載之後,根據要求調用其子類的方法。接口

       如下爲一個簡單的虛函數和純虛寒數的使用演示,目的是拋磚引玉!
#include 
//father class
class Virtualbase
{
public:
        virtual   void  Demon()= 0;        //prue virtual function
        virtual   void  Base() {cout<<"this is farther class"<};
//sub class
class SubVirtual  :public Virtualbase
{
public:
    void Demon() { cout<<" this is SubVirtual!"<        void Base()  { 
cout<<"this is subclass Base"<};
/*           instance class and sample                 */
void main()
{
        Virtualbase* inst = new SubVirtual(); //multstate pointer
        inst->Demon();
        inst->Base();
 //   inst = new Virtualbase();
//        inst->Base()
        return ;
}生命週期

相關文章
相關標籤/搜索