“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
{};