库接口的设计

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.




你可能感兴趣的:(库接口的设计)