理由:
因为私有成员变量构成类的内部布局,私有成员函数则参与函数重载解析,修改了类的底层实现,就要求重新编译使用该类的所有文件。
通过让一个非多态的接口保管一个指向实现的指针(Pimpl),就可以分离代码实现的变动。其成本是不能直接访问底层实现。
例子:
接口(widget.h)
classwidget{classimpl;std::unique_ptrimplpimpl;public:voiddraw();//publicAPIthatwillbeforwardedtotheimplementationwidget(int);//definedintheimplementationfile~widget();//definedintheimplementationfile,//wheimplisa