Routines (alphabetical) > Object Classes > Miscellaneous Object Classes > IDL_Object::_overloadPostIncrementCopy

# IDL_Object::_overloadPostIncrementCopy

The IDL_Object::_overloadPostIncrementCopy function method defines the behavior when the increment (++) or decrement (––) operator is used as part of an assignment statement.

There are two different forms of the increment/decrement operators: pre-increment (++a) and post-increment (a++). If you use the increment operator by itself then there is no difference in behavior. However, if you use the increment operator as part of an assignment then there is a difference in behavior. For example:

a = 5

b = ++a ; both a and b will now have the value 6

b = a++ ; b will have the value 6, while a becomes 7

If a is actually an overloaded object, then we will run into a problem with the post-increment operator. In this case, a will get assigned to b, and then a will be incremented by calling the _overloadPlusPlus method on a's object class. However, b will also be incremented because both a and b point to the same object.

To avoid this problem, you should implement the _overloadPostIncrementCopy method for any class which implements the _overloadPlusPlus or _overloadMinusMinus method. The _overloadPostIncrementCopy method will automatically be called before the _overloadPlusPlus or _overloadMinusMinus. The method is only called when a post-increment assignment is about to be made.

Inside your method, you should either return self (if you don't care about the post-increment difference), or you should create a clone of your object and return the new object reference. Your code is responsible for constructing the clone and ensuring that all of the object's data is copied.

If you do not implement the _overloadPostIncrementCopy method, then the default behavior is to simply return the self object reference.

Note: Even though the method name has the word "Increment", this same method is also called when a post-decrement assignment is performed, b = a--.

## Example

For an example of how to implement this method, see the BigInteger class in the file `lib/datatypes/biginteger__define.pro` in your IDL installation.

## Syntax

In most cases, this method is called indirectly as part of a post-increment (or decrement) assignment. When called explicitly, the syntax is:

Result = Obj->[IDL_Object::]_overloadPostIncrementCopy( )

## Return Value

The return value should be an object reference that is either self or a clone of self.

## Arguments

None

## Keywords

None

## Routine Signature

To overload the method for an object class, implement a method with the following signature:

FUNCTION class::_overloadPostIncrementCopy

The return value of this function should be the new object reference.

## Version History

8.4.1 | Introduced

## See Also

IDL_Object::_overloadMinusMinus, IDL_Object::_overloadPlusPlus, Increment/Decrement operators