当我尝试研究QP / CPP代码时,我遇到了以下问题。
QTimeEvt *t;
// ...
if (t == static_cast<QTimeEvt *>(0)) {
他们为什么要做0的static_cast? 如果他们想要检查NULL,我们可以直接做到这一点吗?
您可以在
中找到此源代码http://www.state-machine.com/qpcpp/qf__time_8cpp_source.html
答案 0 :(得分:11)
是的,这是不必要的,虽然可能是某些风格指南要求明确&#34;或者它可能会使一个过于热心的静态分析工具沉默。
当然,现在,我们只是写nullptr
并留下它。
答案 1 :(得分:4)
写作的惯用方法
QTimeEvt *t;
// ...
if (t == static_cast<QTimeEvt *>(0)) {
...是
QTimeEvt* t;
// ...
if( !t ) {
或者你可以把它写成
if( not t ) {
......虽然你也可以写
if( t == nullptr ) {
...或,¹C++ 03-style,
if( t == 0 ) {
没有必要演员。
这只是浪费时间消耗读者的时间。
注意:
¹如果包含<stddefs.h>
标头,则可以编写NULL
而不是0
,其中需要使用nullpointer。使用现代实现NULL
甚至可以定义为nullptr
。
功能