2004-10-18 C++で動的リンクライブラリを使う際、どの変更まで利用側コードを再コンパイルせずに対応可能か? 調査メモ 仮想メンバ関数の追加は、ヘッダーファイルにおける宣言順番によって異なる 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++では、アクセス修飾子によらず宣言順になる模様。