2011-01-28 13 views
8

कॉलन का अर्थ क्या है (:) ऑपरेटर "uint isWidget: 1;" क्यूटी में? क्या "यूंट है विजिट: 1;" "uint isWidget (1)" के बराबर है?कॉलन का अर्थ क्या है (:) ऑपरेटर "uint isWidget: 1;" क्यूटी में?

क्यूटी में कोड

QObjectData 
{ 
    public: 
    virtual ~QObjectData() = 0; 
    QObject *q_ptr; 
    QObject *parent; 
    QObjectList children; 

    uint isWidget : 1; 
    uint pendTimer : 1; 
    uint blockSig : 1; 
    uint wasDeleted : 1; 
    uint ownObjectName : 1; 
    uint sendChildEvents : 1; 
    uint receiveChildEvents : 1; 
    uint inEventHandler : 1; 
    uint inThreadChangeEvent : 1; 
    uint hasGuards : 1; //true iff there is one or more QPointer attached to this object 
    uint unused : 22; 
    int postedEvents; 
    QMetaObject *metaObject; // assert dynamic 
}; 
+0

को देखते हुए वे के रूप में bitfields रहे एक सी ++ कक्षा में इस्तेमाल किया जा सकता नीचे दिए गए उत्तरों में वर्णित, वे शायद बूलियन के रूप में उपयोग किए जा रहे हैं, लेकिन संकलक के साथ विशेष रूप से उन सभी को 32-बिट शब्द (नोट 10 बिट्स का इस्तेमाल किया गया है और 22 अप्रयुक्त में स्पष्ट रूप से पैक करने का अनुरोध किया गया है)। संकलक का पालन या शायद पालन नहीं हो सकता है। इस तरह पैकिंग बूल के लिए अनिवार्य नहीं है क्योंकि अधिकांश सीपीयू पर यह एक बिट पर संभवतः धीमी गति से चलने में धीमा होता है (संभवत: इसमें शामिल/और | और मूल्यों को बाहर/बाहर करना), इसलिए प्रत्येक बूल को एक स्वतंत्र चार या यहां तक ​​कि शब्द भी दिया जा सकता है .... –

+0

"कॉलम का अर्थ क्या है (:) ऑपरेटर" में यूट है विजिट: 1; "क्यूटी में?" होना चाहिए कॉलन का अर्थ क्या है (:) ऑपरेटर "uint isWidget: 1;" सी ++ में? भाषा अभी भी सी ++ है, क्यूटी पुस्तकालयों का सिर्फ एक सेट है :) –

+0

साइड टिप्पणी: अगर यह संभवतः कम पठनीय है, तो अंतिम बिटफील्ड 'int unused: 22; '' int: 22' के रूप में लिखा गया था जब तक यह वास्तव में उपयोग नहीं किया जाता है। इसके अलावा, यह समकक्ष भी होगा यदि यह पूरी तरह से मौजूद नहीं था (संकलक '22Eits' विशेषता का हिस्सा रखने के लिए उन 22 बिट्स का पुन: उपयोग नहीं कर सकता) –

उत्तर

13

है यह सी struct अंकन का हिस्सा है - आप संपत्ति नाम के बाद एक : numBits का उपयोग करके बिट्स में एक पूर्णांक मैदान के आकार निर्दिष्ट कर सकते हैं।

मुझे लगता है ठीक इसी वाक्य रचना (मैं एक सी पुरुष हूँ, लेकिन मुझे यकीन है कि है कि इस सी ++ में ही बात कर रहा है)

+2

यह अनिवार्य रूप से वही है - सी और सी ++ के बीच अंतर आप अपेक्षा करते हैं, उदाहरण के लिए बिटफील्ड सी ++ में निजी हो सकते हैं। – MSalters

+1

हां यह मान्य सी ++ भी है –

संबंधित मुद्दे