Objects - What are they?

In the expression
Vector2 c3 = c1 + c2;
c1, c2 and c3 are Vector2 objects.
Objects may be manipulated by the user only in a predefined way (through an interface). The expression
Vector2 c3 = c1 / c2;
would be rejected by the compiler because the division operator is not defined for Vector2 objects.
Objects behave like user-defined types. The statement
Vector2 c1 = Vector2(...);
which constructs and initialises a Vector2 object is very similar to
int c1 = int(...);
which constructs and initialises objects of the built-in type, int.
Objects are represented by data and functions but the implementation is hidden.