無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

多態性

多態性(ポリモーフィズム)について。C++では次のような手順になります。

  1. 親クラスのポインタに派生クラスのインスタンスのポインタを代入。
    • Javaと同じですね。
  2. 親クラスのメソッドを実行→派生クラスでオーバーライドしたメソッドが実行される。
    • このとき、オーバーライドするメソッドは、親クラスで「virtual」修飾子を付加しておく必要があります。
    • 「virtual」修飾子をつけないと、ポインタの指すインスタンスが派生クラスでも、親クラスのメソッドが実行されます。
#include <iostream>

// 親クラス
class Animal {
protected :
    char* name;
public :
    Animal( char* name );
    
    // 派生クラスでオーバーライドする関数。virtualをつける。
    virtual void say();
};
Animal::Animal( char* name ){ 
    this->name = name;
} 
void Animal::say() {
    std::cout << "I'm animal "<< this->name << std::endl;
}

// 派生クラス1
class Kitten : public Animal { 
public : 
    Kitten( char* name );
    void say();
};
Kitten::Kitten(char* name ) : Animal( name ) { } 
void Kitten::say() {
    std::cout << "I'm kitten "<< this->name << std::endl;
}

// 派生クラス2
class Tiger : public Animal { 
public : 
    Tiger( char* name );
    void say();
};
Tiger::Tiger(char* name ) : Animal( name ) { } 
void Tiger::say() {
    std::cout << "I'm tiger "<< this->name << std::endl;
}

// メイン関数
int main() {
    
    Kitten mii( "mii" );
    Tiger tora( "tora" );
    
    // 親クラスのポインタ。
    // 親クラスのポインタまたは、そり派生クラスのポインタを代入できる。
    Animal* p = &mii;
    
    // ポインタの示すインスタンスのメソッドを実行(「->」)演算子を使う。
    // 派生クラスでオーバーライドしたメソッドが実行される。
    p->say(); // I'm kitten mii 
    p = &tora;
    p->say(); // I'm tiger tora

    return 0;
}

実行結果です。

I'm kitten mii
I'm tiger tora