个人理解
c++中头文件这种东西在项目大到一定规模以后,就是罪恶了。
随便更改头文件里面某个class的private成员/函数,都会导致依赖文件的rebuild,编译时间增长
Impl便是现在能够想到的,解决这个问题的方法
比如
class a
{
//.... public functions
private:
funca();
funcb();
};
====>
class detail::Impl;
class a
{
//.... public functions
private:
detail::Impl* m_pImpl;
};
再将detail::Impl在cpp文件中定义
这样更改这些priivate的Implemetation就不会导致依赖了,并且,头文件类中均为对外开放接口(这些接口要求要保持一定的稳定性)