Angular, Blockchain, Science とか

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

仮想基本クラス C++

C++での仮想クラス。virtual継承です。

#include <iostream>
using namespace std;

class base {
public:
    int i;
};

// virtualにしないとコンパイルエラーになる
class derived1 :virtual public base{
public:
    int j;
};

class derived2 : virtual public base {
public:
    int k;
};

class derived3 : public derived1, public derived2{
public:
    int sum;
};

int main()
{
    derived3 ob;
    ob.i=10;
    ob.j=20;
    ob.k=30;
    ob.sum=ob.i + ob.j + ob.k;
    cout << ob.i << endl;
    cout << ob.j << endl;
    cout << ob.k << endl;
    cout << ob.sum << endl;
    
    return 0;
}