C++-实现私有化PIMPL[Private Implementation]
1、定义
实现私有化[PIMPLI,Private Implementation]:将一个类的所有成员变量都放进一个单独的类[或结构体]中定义,将实现进行私有化。如此可将类的接口与实现进行解耦。而通过查看Qt源码的实现,绝大多数Qt类都使用实现私有化的方式。
2、优点
①、当成员变量特别多的时候接口文件不会显得臃肿,可读性强;
②、在接口确定好之后,对类的任何修改[增减成员变量、修改实现函数]都不会影响接口,完全解耦;
③、由于使用接口的文件只需要包含头文件,故我们对接口的实现进行修改后,使用接口文件不会再进行编译[O(n)],只需要编译实现的cpp文件[O(1)],这在大工程中非常有用。
3、缺点
①、增加代码开销;
②、对私有化类一般进行new,故事后需要delete,有内存泄漏的风险,不过如果使用智能指针管理私有类对象则不存在此问题。