[英]Why std::bitset::reference::operator~?
我正在閱讀std::bitset
的文檔 ,我想知道為什么std::bitset::reference
顯式定義operator~
因為我沒有看到任何性能或設計原因。 沒有它,我認為它同樣有效:
bool b = ~mybitset[i];
因為引用將轉換為bool,將在其上應用~
運算符。
對此設計決定有何解釋?
bool b = true;
b = ~b;
此操作后b
的值為true
!
這是因為~
將bool
提升為值為1的int
,然后對結果執行bitwise-not,結果為-2,然后將其轉換回bool
,這是真的。
所以它必須提供一個操作員,以便結果是你所期望的。
由於積分促銷, ~true
~1
,當轉換回bool
時,這肯定是非零的,因此不是false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.