如果我有一个函数需要传入指针,但是该指针不应为NULL,我通常会这样做:
void Foo(const somePointer* ptr)
{
if (ptr == NULL)
{
// Throw assertion
return;
}
// Do something
}
现在,我每次都会检查指针是否为NULL,并且如果它没有被设置为NULL或者没有被分配内存,那么这个检查就是无用的。所以,我正在考虑是否应该像这样定义我的函数(尽管我意识到这不能保证我得到一个有效的对象,但至少它不会是NULL):
void Foo(const somePointer& ptr)
{
// No need to check anymore, client is responsible
// Do something
}
在我做出决定之前(或者不做,这取决于我在这里得到的答案),我想在这里询问并看看大家的意见,特别是它的优缺点。