不可变接口的抽象类
Abstract classes for immutable interfaces
想象一下,在C++中定义一个表示自然数的接口。理想情况下类似于:
class Nat {
public:
Nat();
virtual Nat next() = 0; // Bad
virtual int toInt() = 0;
};
这将提供定义各种具体实现的能力。问题是,由于Nat
是抽象的,因此next
的签名是无效的。切换到可变版本是可行的,但这不是我想要实现的。解决这个问题的更好方法是什么?
假设Nat
是不可变的,并且next
应该创建一个新对象,我认为这里最好的方法是返回一个std::unique_ptr<Nat>
,将next
视为工厂创建或克隆方法。
相关文章:
- 抽象类/接口中的空方法是否被认为是一种好的做法?
- 可以模板抽象类接口
- C 分开的抽象类(接口),用于某些通用读取和/或写入访问
- C++中的抽象类与接口
- 我可以在c++接口(抽象类)中包含什么
- 不可变接口的抽象类
- 如何在C++中编程到接口/抽象类
- 接口与抽象类C++
- 抽象类/接口C++
- 防止在C++中对抽象类接口进行子类化
- 接口与抽象类?(一般OOP)
- 通过抽象模板基类接口指针访问派生类方法,而无需在接口中显式类型
- 接口、协议和抽象类
- C#对导出抽象类/接口的C++DLL函数的消耗
- 它是抽象类还是纯虚拟(接口)
- 抽象类作为接口,不带虚函数表
- 接口(抽象类)设计的最佳方法
- c++中的头文件和Java中的抽象类/接口实现是相同的想法,这是正确的吗?
- 抽象类-C++接口交换
- 从纯抽象类(接口)进行虚拟继承是必要的