是否有可能重载C ++ 11 new运算符来创建智能指针?

时间:2014-12-24 07:32:24

标签: c++ c++11 smart-pointers

我想总是使用C ++ 11智能指针,使用传统的指针语法(有点类似于Java语法),因为我不想担心内存管理,我认为它是使用自定义操作符重载新操作符的好主意,换句话说

而不是像这样动态创建新对象:

    obj *o = new obj();

创建传统指向obj的指针,我想让它创建智能指针,就像这样

    obj *o = new obj(); // o will be deleted automatically

我该如何制作这样的东西?

注意:我不想替换原来的新操作符,我只想重载我自己的第一类。

谢谢。

1 个答案:

答案 0 :(得分:3)

没有

只要您obj *o = new ...,您仍然会返回普通指针,而不是新类型。

需要一个新类型(智能指针类),以便您可以使用析构函数来释放内存。如果你只有一个普通的指针 - 你必须手动delete

(有可能提出一个全局垃圾收集器 - 每个新的分配将被记录在那里,全局GC将被定期扫描不再指向的内存区域并解除分配它们。)

相关问题