重新審視未定義的行為和序列點
在主題「未定義的行為和序列點」的續集中,我們深入研究了涉及使用者定義類型的表達式。
使用者定義類型和未定義的行為
考慮以下涉及使用者定義類型索引的表達式:
i += ++i;
此具有內建類型索引的表達式:
此具有內建類型索引的表達式:i.operator+=(i.operator++());
i.operator+=(i.operator++());
(i.operator++()).operator++()).operator++();
同樣,表達式 i.add(i .inc());和 i 定義明確。第一個表達式相當於:
第二個表達式相當於:
這些表達式中的每一個在運算子() 表達式求值之後都有一個序列點,確保物件i 在連續的序列點之間不會被修改兩次。
a[++i] = i;
下標運算子重載
表達式:
以上是C 中的重載運算子是否可以消除「i = i」等表達式中的未定義行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!