c++ - 是否可以在没有模板的情况下创建一个简单的智能指针基类?

标签 c++ templates memory-management smart-pointers reference-counting

我想知道是否可以在不使用模板的情况下创建智能指针基类?

我见过很多实现,但都使用模板。 例如,在其他类派生的基类中实现智能指针逻辑。

最佳答案

问题是你的指针成员的类。

在像 C# 这样的语言中这是可能的,因为有一个“对象” 类,所有其他类都从该类派生。在这种情况下,您将失去类型安全性。

然而,在 C++ 中你没有这样的东西,这给你留下了 2 个选择:

  1. 使用 void*reinterpet_cast - 非常丑陋,由于类型安全,真的不安全。
  2. 为您的类(class)编写大量重载 - 为每个类(class)。不可行,因为它不适用于新类。

因此,最好的方法就是使用模板。
顺便说一句,template 的想法非常好,以至于 C# 在某个版本之后开始使用它。

关于c++ - 是否可以在没有模板的情况下创建一个简单的智能指针基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778938/

相关文章:

java - 如何最小化 GC_FOR_ALLOC 的出现?

c++ - 在类构造函数问题中从文件加载失败

c++ - C++11 mutex 是否只使用静态初始化?

C++ 模板类,根据类型名改变类方法的行为

javascript - 将 METRONIC 添加到 Django 项目

ios - 由于图像,Cocos2d 中的内存警告

c++ - AES、128 和 256 无效 key 长度

c++ - 为什么 C/C++ 没有内置包含保护功能?

javascript - 如何将所有模板包含到一个 Angular 文件中

c - 对数组指针排序后释放内存时出错