我需要确保传递给我的构造函数的某个指针不是NULL
。通常我只是在函数的开头放一个Q_ASSERT()
,如下所示:
void Class::doStuff( Object *object )
{
Q_ASSERT( object );
// do stuff
}
但是由于构造函数是一个特殊函数,我想知道这个技术是否是犹太教。在像这样的构造函数中使用Q_ASSERT有什么问题吗?
Class::Class( Object *object, QObject *parent = NULL )
:
QObject( parent ),
_object( object )
{
// make sure that object is not NULL
Q_ASSERT( object );
// do stuff that will dereference the pointer, hence it must not be NULL
if( object->hasSomething() )
// do stuff
}
如果这是不好的做法,那么检查NULL
的正确方法是什么,最好是在施工时?
答案 0 :(得分:3)
在构造函数中使用Q_ASSERT
即可。没有理由不这样做。它只是在输出中打印一条消息。
答案 1 :(得分:0)
这实际上取决于您的代码的使用方式和位置。你是对的,构造函数是一个特殊的函数,最佳实践是
好吧,如果它在构造函数中,那个特定对象的状态对于已经完成的事情以及需要清理的事情等都不清楚。因此,在一天结束时,您可以打电话询问是否存在问题。