(uint isWidget: 1;) kolonunun (:) operatörünün anlamı nedir? Qt içinde? "Uint isWidget: 1;" "uint isWidget (1)" ile eşdeğerdir?(uint isWidget: 1;) kolonunun (:) operatörünün anlamı nedir? Qt içinde?
Qt kodu Bu C struct
gösterimde parçasıdır
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
};
Verilen onlar bitfields olman C++ sınıfında kullanılabileceğini kabul gerekir Aşağıdaki cevaplarda açıklanmıştır, muhtemelen boole olarak kullanılıyorlar, ancak derleyici özellikle hepsini bir 32-bit kelime halinde paketlemeyi talep etti (not 10 bit kullanılmış ve 22 açık olarak kullanılmamış). Derleyici uygun olabilir veya uymayabilir. Bu gibi ambalajlama bool için zorunlu değildir çünkü çoğu CPU'larda tek bir bit üzerinde çalışmak daha yavaştır (muhtemelen/-ing ve -ing değerlerini içeri/dışarı dahil eder), böylece her bool verilen bir bağımsız char veya hatta kelime olabilir .... –
"Kolonun anlamı nedir (:)" uint isWidget: 1; "in Qt içinde?" olmalı, kolonun anlamı nedir (:) "uint isWidget: 1; C++ 'da mı? Dil hala C++, Qt sadece bir dizi kütüphanedir :) –
Yan yorum: eğer belki de daha az okunabilirse, son bit alanı int kullanılmamışsa: 22; 'int: 22' olarak yazılmıştır. Aslında kullanılmadığı sürece, aynı zamanda tamamen mevcut değilse (derleyici, "postedEvents" özniteliğinin bir kısmını tutmak için bu 22 biti yeniden kullanamaz) –