C++接口与实现分离的2种方法(三)

2013-10-17 09:04:27 · 作者: · 浏览: 619

 

  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的实现,简单安全