2012-06-26 29 views
0

我發現這些oddl線C++ QList在if語句中,什麼是默認值?

QList<TDataXml *> *newXMLData = input->getValue<QList<TDataXml *>>(); 
    if(newXMLData) 
    { 
     // do things 
    } 

我不明白if(newXMLData)一些代碼示例。這是一個QList。何時應該陳述是真是假?爲什麼不使用Qt isEmpty()方法呢?

由於

回答

2

if(newXMLData)檢查無效,因爲newXMLData是一個指針,因此,它可以指向任何對象,在這種情況下它的值是nullptr(或NULL在C++ 03)。

如果newXMLDatanullptr,那麼這將是true如果塊將執行,否則false如果塊將不會執行。

它是相同(C++ 11):

if(newXMLData != nullptr) //or if(newXMLData != NULL) in pre C++11 
{ 
    //your code 
} 
0

newXMLData指針QList並且這樣可以初始化爲NULL。通過在布爾上下文中測試指針,可以避免取消引用NULL指針,這將是未定義的行爲。

換句話說,if語句不是用來檢查列表是否爲空,而是在那裏檢查對getValue()方法的調用是否返回了有效指針。只有當指針不爲NULL時,該語句纔會評估爲真。只有這樣你才能可靠地調用isEmpty()或指針指向的類的任何其他方法。

0

如果(newXMLData)指指針newXMLData指向有效的對象或沒有。如果指針指向Nothing(NULL),則不能調用對象的方法。所以你需要測試指針是否有效。

0

檢查newXMLDataNULL0。 但是,newXMLData需要在if語句之前初始化爲0或NULL。