[英]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.