ポインタ 〜 純粋仮想関数・抽象クラス

#include <iostream>
using namespace std;

 // 抽象クラス(基底クラス)−−−−−−−−−−−
class hello{
    private:
        char *s;
    public:
        hello(){}
        virtual ~hello(){}  //仮想デストラクタ [virtual デストラクタ]
        virtual void hello_world()=0;  //純粋仮想関数 [virtual メンバー関数=0;]
   // 純粋仮想関数を宣言するとそのクラスは「抽象クラス」になる。
   // 抽象クラスのインスタンスを作ることができない。
};

void hello::hello_world(){
    s = "hello world";
    cout << s <<endl;
}

 // 派生クラス(継承クラス)−−−−−−−−
class hello2 :public hello{
    public:
        hello2():hello(){};
        void hello_world();
};

void hello2::hello_world(){
    cout << "hello c++" <<endl;
}

int main(){
    hello2 Output2;
    /* 抽象クラスのインスタンスを作ることができない。ここに
    hello Output;
    といれるとエラーになる。
    */
    hello *p; 
    p = &Output2;
    p -> hello_world();
    return 0;
} 

実行結果
hello c++