調査メモ
- 仮想メンバ関数の追加は、ヘッダーファイルにおける宣言順番によって異なる
public:
virtual int vmethod1();
virtual int vmethod2(); // この追加はOK
public:
virtual int vmethod2(); // この追加はNG
virtual int vmethod1();
仮想メンバ関数は、検索用テーブル(vtbl)のインデックスでアクセスすると思われるので、
既存のインデックスが変わらないような追加であれば可能。
- 仮想メンバ関数がvtblにどの順序で格納されているかは(多分)コンパイラ依存だが、GCC 2.95.3およびSun Forte6 C++では、アクセス修飾子によらず宣言順になる模様。