gpt4 book ai didi

c++ - 为什么要按照前置增量来实现后置增量呢?

转载 作者:太空狗 更新时间:2023-10-29 20:24:47 26 4
gpt4 key购买 nike

Herb Sutter 建议像这样实现后增量:

T T::operator++(int)() {
auto old = *this; // remember our original value
++*this; // always implement postincr in terms of preincr
return old; // return our original value
}

根据指南:

Guideline: For consistency, always implement postincrement in terms of preincrement, otherwise your users will get surprising (and often unpleasant) results.

这些令人惊讶(通常令人不快)的结果是什么?

最佳答案

这确保两个运算符在修改对象的方式上表现相同,只是返回值不同。如果您分别实现这两个运算符,并决定修改其中一个,您可能会忘记对另一个进行等效更改。如果您根据另一个实现一个,则只需在一个地方进行更改。 preincrement 成为更基本的方法是有道理的,因为 postincrement 的唯一区别是先临时保存旧值。

当他说您的用户会得到令人惊讶的结果时,他可能言过其实了。他可能应该说可能会得到令人惊讶的结果,因为它只有在你搞砸的情况下才会发生。

关于c++ - 为什么要按照前置增量来实现后置增量呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26308601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com