gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:41:58 27 4
gpt4 key购买 nike

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

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

    obj *o = new obj();

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

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

如何制作这样的东西?

注意:我不想替换原来的new运算符,我只是想重载我自己的class one。

谢谢。

最佳答案

没有。

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

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

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

关于c++ - 是否可以重载 C++11 new 运算符来创建智能指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27633244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com