首页 > 试题广场 >

请你来回答一下++i和i++的区别

[问答题]
我觉得这题这么答就是个死,我觉得应该答原子操作那一块,i++不是线程安全的
发表于 2019-07-20 08:52:31 回复(0)

不扯一扯运算符重载?
前缀重载是WhateverReturnType T::operator++(),后缀重载是WhateverReturnType T::operator++(int)

实际使用中,尤其是自定义迭代器时,一般都是和原生类型的前后缀自增语义保持一致(++i是左值,i++是右值,类型都和i一致)

class Type {
    void increment() { ... }
public:
    Type& operator++()    { increment(); return *this; }
    Type  operator++(int) { auto copy = *this; operator++(); return copy; }
};
发表于 2019-08-29 08:49:57 回复(0)