双“=”我碰到这条线的时候,我做了一些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'。 –