Idiom : pimpl

用c++ 11实现:

#include 

class MyClass {
public:
  MyClass();
  ~MyClass();

  void DoSomeThing();

private:
  class MyClassImpl;
  std::unique_ptr impl_;
};

#include "MyClass.h"

#include "MyClassImpl.h"

MyClass::MyClass() : impl_(new MyClassImpl){}

MyClass::~MyClass() = default;

void MyClass::DoSomeThing() {
  impl_->DoSomeThing();
}

#include "MyClass.h"

class MyClass::MyClassImpl
{
public:
  MyClassImpl() = default;
  ~MyClassImpl() = default;

  void DoSomeThing() {}
};



你可能感兴趣的:(c++,Idioms)