我想总是使用C ++ 11智能指针,使用传统的指针语法(有点类似于Java语法),因为我不想担心内存管理,我认为它是使用自定义操作符重载新操作符的好主意,换句话说
而不是像这样动态创建新对象:
obj *o = new obj();
创建传统指向obj的指针,我想让它创建智能指针,就像这样
obj *o = new obj(); // o will be deleted automatically
我该如何制作这样的东西?
注意:我不想替换原来的新操作符,我只想重载我自己的第一类。
谢谢。
答案 0 :(得分:3)
没有
只要您obj *o = new ...
,您仍然会返回普通指针,而不是新类型。
需要一个新类型(智能指针类),以便您可以使用析构函数来释放内存。如果你只有一个普通的指针 - 你必须手动delete
。
(有可能提出一个全局垃圾收集器 - 每个新的分配将被记录在那里,全局GC将被定期扫描不再指向的内存区域并解除分配它们。)