如果i
是一个 int
, 类似 ++i + ++i
的表达是未定义的行为,因为有 2 个未排序的修改 i
.但是,如果 i
是一些int
-类,++i + ++i
相反具有不确定顺序的修改,因此是定义的行为(在这种情况下具有确定性结果)。是否存在这样一种情况,即对基元的操作是无序的而不是不确定的顺序会更好?如果是这样,为什么这种情况不适用于用户创建的类型?如果不是,为什么原始操作根本没有顺序?
最佳答案
一般来说,“未排序”的越多越好。
在 C++ 中不可能使两个函数交错运行。因此,不可能交错运行两个 operator++
实现。
因此,对于实现 operator++
的类类型,这是不确定的顺序。
关于c++ - 为什么对原始类型的操作是无序的而不是不确定的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745889/