在隐藏实现中,我已经阅读了很多关于“代理类”或“处理类”或“柴郡猫微笑”技术的内容,其中您基本上包含指向“真实”类的指针作为公共/代理类中的数据成员,然后在“真实”类中实现所有内容。
但是我正在查看一些示例代码,并注意到另一种似乎更容易的技术,因为它不需要您还在句柄类中编写“虚拟”方法然后调用句柄类中的真实方法,也不需要它根本需要任何数据成员,而且总体上看起来更加精简。
该技术是将所有公共方法简单地定义为一个struct
(或一切都在的类public
)和所有virtual=0
成员函数,仅此而已。因此没有实现。然后,定义一个返回指向 this 的指针的静态函数,struct
以便客户端可以使用该类。但是在幕后,这个方法实际上返回了结构的一个子类,然后你可以在这个子类中做更多的事情。
如果这很简单,而且我认为它比包含一个指向单独类的指针的数据成员的公共类更优雅,并且必须实现公共类对数据成员方法的调用,那么为什么这不是隐藏实现中讨论最多的技术?