为什么我们使用static_cast为NULL

时间:2016-12-23 00:07:27

标签: c++ static-cast

当我尝试研究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

2 个答案:

答案 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。 功能

相关问题