## How to override an operator for polymorphism

Can anyone explain to me what I'm doing wrong here?All that I'm trying to do is to use the idea of polymorphism for operators, in special the operator++. I want to have a result something like this:

## What type does the conversion logic target?

I don't understand why in the following code the expression C c3 = 5 + c; doesn't get compiled although 5 could be converted to type C as in the previous statement.

## What type the conversion logic targets

I don't understand why in the following code the expression C c3 = 5 + c ; doesn't get compiled although 5 could be converted to type C as in the previous statement

I'm confused since when I assign l2 = l1 by using an overloaded operator, why does the contents of l1 change, when altering l2 later on? Especially since l1 is passed as a const. They somehow point to the same object in memory instead of being a copy.

## In C++ do you need to overload operator== in both directions?

Say I am working with a class:and I provide an overload for operator==Do I also need to re-implement the same logic in reverse?

## Why does overloading ++ take significantly longer than incrementing just the value?

Why does incrementing an (in my case) Uint by one 100.000.000 times take ~0.175 seconds, while incrementing an Uint within a struct the same amount of times takes ~1.21 seconds?

## Why does this call to arrow (->) operator fail?

Consider the following code : Why is the call to the second -> operator incorrect? I know this usage of -> is different from the general usage, but is such usage disallowed by the standard?

## Is i = i + n truly the same as i += n?

One block of code works but the other does not. Which would make sense except the second block is the same as the first only with an operation written in shorthand. They are practically the same operation.