首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将空指针传递给函数时确保编译错误

在将空指针传递给函数时确保编译错误
EN

Stack Overflow用户
提问于 2022-01-23 09:24:42
回答 3查看 422关注 0票数 -1

假设我有一个函数,它接收指针。

代码语言:javascript
复制
int functionA(int* a, int* b)
{
    ...
}

我可以在functionA中添加空检查。是否有一种方法可以确保在nullptr作为参数传递时编译时发生错误。

EN

Stack Overflow用户

回答已采纳

发布于 2022-01-23 10:36:17

是一种方法,我可以确保当nullptr作为参数传递时,编译时就会发生错误。

如果您具体指的是nullptr关键字,那么就算是吧。您可以提供在这种情况下将选择的重载,并将其定义为“删除”。这是工作的,只要你没有显式绕过超载,例如,铸造。

代码语言:javascript
复制
int functionA(int*, std::nullptr_t) = delete;
int functionA(std::nullptr_t, int*) = delete;

// ...
functionA(&i, &j)            // OK
functionA(nullptr, &i);      // error
functionA(&i, nullptr);      // error
functionA(nullptr, nullptr); // error

NULL

除了以前的重载之外,这还需要为整数添加重载:

代码语言:javascript
复制
int functionA(int*, int) = delete;
int functionA(int, int*) = delete;

// ...
functionA(NULL, &i);      // error
functionA(&i, NULL);      // error
functionA(NULL, NULL);    // error

如果您指的是任何带空值的指针,那么就不能这样做,因为函数参数的值通常不能在编译时被知道。

如果您的目标是不使用指针作为迭代器,那么将更安全、更方便地传递引用。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70820698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档