在实现策略时,需要遵循特定的接口(interface)。据我了解,这些政策必须能够相互替代。在现代 c++ 书中,Ch 1.5 3 策略具有相同的接口(interface)“T* Create() {}”。为什么不需要抽象它。如果策略应该有多个接口(interface),那将很重要。据我所知,抽象类给出了接口(interface)应该在具体类(策略类)中的方法。在Wikipedia example “使用”定义策略应该具有哪些接口(interface),但它不是通过抽象类。抽象类的目的不就是确保派生类具有所需的接口(interface)吗?
我错过了什么?
最佳答案
不同之处在于,使用抽象基类的接口(interface)具有提供运行时多态性的虚函数。
策略用于为模板提供编译时多态性。编译器会注意到您的策略类是否具有 T* Create()
。否则,您将在尝试使用它时遇到编译时错误。
关于c++ - 为什么不抽象政策?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643333/