雙「=」我碰到這條線的時候,我做了一些laborations:在初始化
int home_address = current_pos_ = hash(key, size_);
,我想知道它實際上呢? (不是散列函數或任何東西,只是 「int變量=變量=值;」 的東西)
雙「=」我碰到這條線的時候,我做了一些laborations:在初始化
int home_address = current_pos_ = hash(key, size_);
,我想知道它實際上呢? (不是散列函數或任何東西,只是 「int變量=變量=值;」 的東西)
表達被讀爲:
int home_address = (current_pos_ = hash(key,size_));
它將hash(key,size_)
的結果分配到current_pos_
,然後將current_pos_
的值分配到home_address
。
int x = y = 0;
相同
int x = 0;
y = 0;
賦值運算符求值爲其左參數的最終值,因此此代碼將hash(key, size_)
指定爲current_pos_
,並使用新值current_pos_
初始化home_address
。
可以重載賦值運算符以返回任何類型的任何值,因此一般來說,此表達式的行爲是調用current_pos_
的賦值運算符,結果爲hash(key, size_)
(可能執行隱式轉換),然後用賦值運算符的返回值初始化home_address
(也許執行隱式轉換)。
+1用於分配和初始化之間的區別。 –
更準確地說,它分配給'current_pos_',但是*初始化*'home_address'。 –