C++のリファレンスでもポリモーフィズムが実現できる

基底クラスのリファレンスで派生クラスのオブジェクトを指した場合でもちゃんと派生クラスでオーバーライドしたメンバ関数を呼び出せるみたい.へぇーへぇーへぇー.

#include <iostream>
using namespace std;

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

class Inherit : public Base {
  public:
    void message() {
      cout << "Inherit" << endl;
    }   
};

int main() {
  Base b;
  Inherit i;

  // それぞれBaseのリファレンスからmessageを呼び出してみる
  Base &br1 = b;
  Base &br2 = i;
  br1.message(); // これはBaseのものが呼ばれる
  br2.message(); // これはInheritのものが呼ばれる

  return 0;
}

【実行結果】

Base
Inherit

ちゃんとポインタの場合と同じようになるのね.