什么是不透明指针?
顾名思义,不透明是我们看不到的。例如,木材是不透明的。不透明指针是指向数据结构的指针,该数据结构的内容在定义之时不公开。
跟随指针是不透明的。通过查看定义,无法知道STest结构中包含的数据。
struct STest * pSTest;
将NULL分配给不透明的指针是安全的。
pSTest = NULL;
为什么不透明的指针?
在某些地方,我们只想提示编译器“嘿!这是我们的客户将使用的某些数据结构。不用担心,客户将在准备编译单元时提供其实现”。当我们处理共享代码时,这种类型的设计是健壮的。请参见以下示例:
假设我们正在开发一个用于处理图像的应用程序。由于我们生活在一个万事俱备的世界中,而且购买设备的价格非常便宜,因此我们希望开发适用于Windows,Android和Apple平台的应用程序。因此,根据我们的要求,有一个健壮,可扩展和灵活的好的设计将是很好的。我们可以拥有所有平台都可以使用的共享代码,然后不同的端点可以拥有平台特定的代码。
为了处理图像,我们有一个CImage类,该API公开了API以处理各种图像操作(缩放,旋转,移动,保存等)。
由于所有平台都将提供相同的操作,因此我们将在头文件中定义此类。但是,跨平台处理图像的方式可能有所不同。就像Apple可以使用与Windows不同的机制来访问图像的像素。这意味着API可能需要不同的信息集来执行操作。因此,要处理共享代码,这就是