【发布时间】:2019-06-10 03:24:11
【问题描述】:
我注意到这个编译:
#include<memory>
#include<iostream>
using namespace std;
int main()
{
unique_ptr<int>a(nullptr);
if(!a)
cout<<"NULLPTR";
}
但是,这不是:
#include<memory>
#include<iostream>
using namespace std;
int main()
{
unique_ptr<int>a(NULL);
if(!a)
cout<<"NULL";
}
我正在使用具有several functions which return a raw pointer 的库,并且必须在使用后手动释放它们。我想使用 unique_ptr(带有自定义删除器)来管理这些原始指针。 我担心那些函数返回 NULL 的情况,因为我认为这可能会导致一些问题。
【问题讨论】:
-
NULL不是问题;这就是你用它做什么。函数 returnType*被键入给调用者,无论它返回NULL、nullptr(您应该使用)还是其他。奇怪的是您询问了“可以返回NULL的函数”,但没有发布这样的函数作为显示您担心的示例。 -
@WhozCraig 我已经添加了我正在使用的库的链接。您可以检查页面上给出的第一个功能。
标签: c++ c++14 smart-pointers unique-ptr