shared_ptr<X> createX();
x.cpp
#include "X.h"
#include <stdio.h>
class X_impl: public X
{
private:
X_impl(){};
X_impl(X_impl const &);
X_impl & operator=(X_impl const &);
public:
~X_impl(){printf("~X_impl\n");};
virtual void f()
{
printf("X_impl.f()\n");
}
virtual void g()
{
printf("X_impl.g()\n");
}
private:
friend shared_ptr<X> createX();
};
shared_ptr<X> createX()
{
shared_ptr<X> px(new X_impl);
return px;
}
总结:
接口与实现的分离,有助于我们对代码实现的保护,特别是如果我们开发lib共别人使用使,更要注意。在实现分离的过程中,最好采用上面的第一种方法的智能指针boost::shared_ptr的实现,简单安全。