По крайней мере в C ++ операторы могут быть перегружены, поэтому семантика ++i
и i++
не гарантируется - их фактически можно перегружать для выполнения совершенно разных вещей, и даже можно сделать для выполнения чего-то, что имеет ничего не делать с приращением. Таким образом, ответ на ваш вопрос заключается в том, что нет - по крайней мере в одном языке операторы postfix и prefix ++
для классов могут делать все, что пожелает программист.
Но если кто-то может это сделать, это не значит, что он должен это делать. Поскольку операторы до и после приращения имеют очень хорошо известную семантику, (приличные) программисты на C ++ стараются не нарушать этого, чтобы код, использующий их, был бы наиболее удивлен.
Хорошим примером перегрузки операторов в C ++ являются итераторы STL. Итераторы для контейнеров, таких как связанные списки, определяют класс, который перегружает операторы preincrement и postincrement таким образом, что он имитирует указатель (итераторы в C ++ на самом деле являются обобщением указателей).