コンパイラの警告 (レベル 4) C4435

'class1': /vd2 下のオブジェクトのレイアウトは仮想ベース 'class2' により変更されます

既定では、この警告はオフに設定されています。 詳細については、「 既定で無効になっているコンパイラ警告 」を参照してください。

既定のコンパイル オプションである /vd1 では、派生クラスは指定された仮想ベースの vtordisp フィールドを持ちません。 /vd2 または #pragma vtordisp(2) が有効な場合は、vtordisp フィールドが存在し、オブジェクトのレイアウトが変更されます。 これにより、相互に作用するモジュールが異な るvtordisp 設定でコンパイルされた場合、バイナリ互換性の問題が発生する可能性があります。

次の例では C4435 が生成されます。

// C4435.cpp
// compile with: /c /W4
#pragma warning(default : 4435)
class A
{
public:
    virtual ~A() {}
};

class B : public virtual A  // C4435
{};

関連項目

vtordisp
/vd (ディスプレイスメントの無効化)