用c++ 11实现:
#include <memory>
class MyClass {
public:
MyClass();
~MyClass();
void DoSomeThing();
private:
class MyClassImpl;
std::unique_ptr<MyClassImpl> 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() {}
};