今天我看到這個代碼,一個類中:uint32_t的析構函數的返回值
static const uint32_t invalid_index = ~uint32_t();
我的問題是,什麼是uint32_t
析構函數的返回值,爲什麼是它有用嗎?
今天我看到這個代碼,一個類中:uint32_t的析構函數的返回值
static const uint32_t invalid_index = ~uint32_t();
我的問題是,什麼是uint32_t
析構函數的返回值,爲什麼是它有用嗎?
這不是一個析構函數,但按位NOT
操作者施加在值初始化uint32_t
。
值初始化整數類型爲0
,所以您正在採取0
的位數NOT
。
到類似:
uint32_t x = uint32_t(); // 32 0's in binary form
uint32_t y = ~x; // 32 1's in binary form
這不是一個析構函數,它是二進制的不是。這裏的無效索引等於〜uint32_t(0)。這是一個32位無符號整數,所有位都置位。即0xffffffff。
這是按位NOT並且它可以用於找到的補(例如,〜1011 = 0100)或試圖找到2的補時(中間步驟例如。[〜1011] + 0001 = 0101)。
首先,正如許多人已經提到的,你看到的代碼,
static const uint32_t invalid_index = ~uint32_t();
不是析構函數調用,但按位「非」 ~
,適用於類型,uint32_t()
的默認值,即~(uint32_t(0))
。
現在你的問題,
我的問題是,什麼是uint32_t的析構函數的返回值,爲什麼是它有用嗎?
的僞析構函數(它’不是一個真正的析構函數,只是一個相同的符號的析構函數調用什麼都不做的工作)的返回類型是void
,並’ S表示主要用通用編程,你不知道’ t知道類型。
實施例:
uint32_t x;
x.~uint32_t(); // Silly but valid, a pseudo-destructor call.
@downvoter:請解釋你的見解,以便其他人可以避免認真對待你。 – 2012-08-02 21:24:16
-1 「這裏無效索引等於uint32_t的(〜0)」 不,不一般。文字是一個'int','int'只能保證有16位。 – 2012-08-02 21:14:29
「文字是一個int,int只能保證有16位」。不uint32保證是32位? – user1507133 2012-08-02 21:22:38
@ user1507133,是的,但是'0'不是'uint32_t'這是'int',所以''0, – 2012-08-02 21:28:58