是否可以编写一个智能指针,在其构造函数中分配对象本身 - 而不是开发人员必须调用 new
?换句话说,而不是写:
std::unique_ptr<myClass> my_ptr(new myClass(arg1, arg2))
...可以这样写:
std::smarter_ptr<myClass> my_ptr(arg1, arg2)
语言语法能表达这个吗?这是可取的吗?可怕?我特别想防止这个错误(当然是我自己犯的):
myFunction(std::unique_ptr<myClass>(new myClass()), std::unique_ptr<myClass>(new myClass()))
...如果第二次分配发生并在第一个对象安全地存放在其智能指针中之前抛出,则有泄漏首先分配的对象的风险。但是,更智能的指针真的能让它安全吗?
最佳答案
查看make_shared()
的实现.它这样做会分配一个新对象并创建一个 shared_ptr
关于c++ - 为什么智能指针不能在其构造函数中为我调用 new()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689004/