我想知道是否可以在不使用模板的情况下创建智能指针基类?
我见过很多实现,但都使用模板。 例如,在其他类派生的基类中实现智能指针逻辑。
最佳答案
问题是你的指针成员的类。
在像 C# 这样的语言中这是可能的,因为有一个“对象” 类,所有其他类都从该类派生。在这种情况下,您将失去类型安全性。
然而,在 C++ 中你没有这样的东西,这给你留下了 2 个选择:
- 使用 void* 和 reinterpet_cast - 非常丑陋,由于类型安全,真的不安全。
- 为您的类(class)编写大量重载 - 为每个类(class)。不可行,因为它不适用于新类。
因此,最好的方法就是使用模板。
顺便说一句,template 的想法非常好,以至于 C# 在某个版本之后开始使用它。
关于c++ - 是否可以在没有模板的情况下创建一个简单的智能指针基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778938/