Angular, Blockchain, Science とか

Angular, Blockchain, Science全般 の情報を主に書いていきます。

C++ virtual関数とポリモーフィズム

仮想関数を使った非常に簡単な、ポリモーフィズム。

#include <iostream>
using namespace std;

class base{
public:
    virtual void who(){cout << "Base"<< endl;}
};

class first : public base{
public:
    void who(){cout << "first"<<endl;}
};

class second : public base{
public:
    void who(){cout<< "second"<<endl;}
};

int main()
{
    base base_obj;
    base *p;
    first first_obj;
    second second_obj;
    
    p=&base_obj;
    p->who();
    p=&first_obj;
    p->who();
    p=&second_obj;
    p->who();
    return 0;
}

base型のポインタでもfirst second の関数を呼び出せます。