8
“uint isWidget:1;”中的冒号(:)运算符是什么意思?在Qt中?是“uint isWidget:1;”相当于“uint isWidget(1)”?“uint isWidget:1;”中的冒号(:)运算符的含义是什么?在Qt中?
Qt中的代码是
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
};
鉴于他们是位域一起使用在下面的答案中描述,它们可能被用作布尔值,但是编译器特别要求将它们全部打包成一个32位字(注意使用了10位,明确表示未使用)。编译器可能符合也可能不符合。像这样的打包不是强制bool的,因为在大多数CPU上,它在一个位上操作比较慢(可能涉及&-ing和| -ing值输入/输出),所以每个bool可能是一个给定的独立字符或甚至字.... – 2011-01-28 07:53:29
“Qt中”uint isWidget:1;“中冒号(:)运算符的含义是什么?”应该是什么意思冒号(:)运算符在“uint isWidget:1;”在C++中?语言仍然是C++,Qt只是一组库:) – 2011-01-28 08:15:43