在C++里,我们一般使用C++语言的纯虚类来作为接口类。当一个接口类需要向前兼容时,往往会要求我们在类的末尾增加接口。但是,是不是遵循这个规则就足够了呢?在最近的一次开发中我发现,如果在接口类的最后重载了一个接口,在VC编译器里会把最后一个接口在虚表的位置调整到前面与它名字一样的接口位置的后面。结果破坏了我们的向前兼容。
在C++里,我们一般使用C++语言的纯虚类来作为接口类。当一个接口类需要向前兼容时,往往会要求我们在类的末尾增加接口。但是,是不是遵循这个规则就足够了呢?在最近的一次开发中我发现,如果在接口类的最后重载了一个接口,在VC编译器里会把最后一个接口在虚表的位置调整到前面与它名字一样的接口位置的后面。结果破坏了我们的向前兼容。