簡體   English   中英

為什么我們使用static_cast為NULL

[英]Why we are using static_cast to NULL

當我嘗試研究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

是的,這是不必要的,雖然它可能是由一些風格指南強制要求的“清晰度”,或者它可能會使一個過度熱心的靜態分析工具沉默。

當然,現在,我們只需編寫nullptr並將其nullptr

寫作的慣用方式

QTimeEvt *t; 
// ...
if (t == static_cast<QTimeEvt *>(0)) {

......是

QTimeEvt* t; 
// ...
if( !t ) {

或者你可以把它寫成

if( not t ) {

...雖然你也可以寫

if( t == nullptr ) {

......或者,C ++ 03風格,

if( t == 0 ) {

沒有必要演員。

這只是一種消耗讀者時間的措辭。

筆記:
¹如果包含<stddefs.h>標頭,則可以寫入NULL而不是0 ,其中需要nullpointer。 使用現代實現, NULL甚至可以定義為nullptr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM