背景
项目上遇到一份老代码的框架,其中有queryInterface的接口看着让人无所适从,查阅了com组件的一些资料后,做一个简单的总结。
场景
你有一份代码main.cpp编译出可执行文件A,依赖于libs.cpp编译出来的动态库B。编译完成后,动态库做了一些改动,重新编译后推到系统lib64文件夹内。试下想A是否能正常运行?
开始时状态是这样的:
// libs.cpp
Class MyBaseClass {
public:
virtual void doSth();
private:
int valA;
};
Class MyClass : public MyBaseClass {
public:
virtual void doSth() override
{
...
}
};
// main.cpp
int main()
{
MyClass* tmp = new MyClass();
MyBaseClass* p = static_cast<MyBaseClass*>(tmp);
p->doSth();
return 0;
}
可执行文件A编译完后,不作改动。libs.cpp改动后重新编译,改动如下:
// libs.cpp
Class MyBaseClass {