我正在尝试在 C++ 中实现 unique_ptr 类,但如何知道我们传递给它的指针是否是使用new或new[]不使用 using分配的default_delete(我的学校标准不允许 c++11)。我的意思是,当您将指针传递给构造函数时,例如:
unique_ptr<int> ptr(new int[10]);
Run Code Online (Sandbox Code Playgroud)
你如何知道班级内部是否需要打电话delete[]或delete?
你说不出来。并且也不能std::unique_ptr。
想一想。如果它可以自动确定,你就不需要两种delete.
std::unique_ptr<int> ptr(new int[10]);是错误的,因为它会调用delete,而不是delete[].
使用std::unique_ptr<int[]> ptr(new int[10]);相反,它将调用delete[], 而不是delete。