1,利用虚函数
class base
{ public:void func(); }
class child
{public: void func();}
base* b=new child()
2,利用impl
class base
{private:class baseImpl* pimpl;}
//cpp
class baseImpl
3,利用回调函数,boost的function,bind或者fastdelegate
总结:利用虚函数的话,一旦接口文件有更改,调用这个接口的应用也必须重新编译,无法保证二进制兼容性;
impl的话,中间多了一层,跨平台中蛮有用的,可以参考ace.