目录
前言
当我们在编译完成某个C++项目的时候,我们期望对项目内某个类进行一些小的改动,即使这个改动对这个类的影响很小,但当我们重新按下编译时,通常需要花上等同第一次编译的时间对整个项目应用这个微小的改动。那么有什么方式能够解决这个令人头疼的问题呢?
PImpl!
一、PImpl是什么?
PImpl全称Pointer to implementation指向实现的指针,通过一种将类的实现放置在单独类中以不透明指针访问的方式,将类的实现从对象中移除隐藏起来的编程技巧。可以很好的降低编译过程的依赖性,同时也可以解决一些意想不到的问题。
可能这样,很多人并不能够很好的理解什么是PImpl以及为什么PImpl能够解决重新编译速度的问题,那么我们从C++类的定义开始。
来看一个简单的C++类的定义:
class Person
{
public:
string name="";
private:
int age=0;
double weight=0;
Date birthdate;
}
这里描述了一个类:人,它具有姓名、年龄、体重以及生日这几个成员变量,其中年龄、体重以及生日为私有属性(保护隐私啦,哈哈)。当我们将这个类放入项目经行编译的时候,就会发现它无法通过编译,原因就是当编译此文件时,编译器没有获得string、Data这两个类的定义式。此时我们就通常需要依靠在Person定义前添加:
#include<string>
#include"Data.h"
来解决这个问题。此时类Person的定义文件编译就与其他文件(str

本文介绍了C++的PImpl(Pointer to Implementation)编程技巧,通过将类的实现隐藏在单独的不透明指针中,减少编译依赖,提升编译速度。文章详细阐述了PImpl的原理,给出了具体实现示例,并探讨了其在解决编译问题和跨语言支持中的应用。
最低0.47元/天 解锁文章
1998

被折叠的 条评论
为什么被折叠?



