是否可以用C ++返回return语句或执行具有类似功能的事情?
例如,如果代码中有多个函数将指针作为输入,并且每个函数检查指针是否为nullptr,这将很方便。如果它是nullptr,则函数应停止执行任何操作并返回0
或适用于其类型的任何内容。
让inputPtr
是赋予返回int*
的函数的int
。而不是像
...
if(inputPtr == nullptr) {
return 0;
}
...
每次都有很酷
...
checkNull(inputPtr);
...
或类似的东西。 在这个示例中,它当然还不错,但是可以想象一个更复杂的测试功能。
从概念上讲,这似乎很奇怪。但是通常有一种方法可以防止重复。
答案 0 :(得分:7)
否,这是不可能的,并且在任何情况下隐藏控制流都可能被认为是一个坏主意。如果您必须编写检查功能,那么使返回布尔值很简单,那么:
if(checkNull(inputPtr)) return 0 ;
答案 1 :(得分:1)
不幸的是,这是只有在C ++中才能用宏解决的很少的事情之一。
也就是说,您在代码中确实不能忍受额外的if
,并且您拥有广泛的合同,该合同允许将nullptr
作为参数。
我个人不会使用宏,而只会使用清晰的if
语句。
答案 2 :(得分:1)
我认为基本上有三个选择:
gsl::not_null
在这里您可以找到很好的帖子。 https://www.bfilipek.com/2017/10/notnull.html (当然,这不是完美的解决方案,但可以为您节省一些时间:))