In C++ the first operand(object) will call the overloading function. What will do the same in c#?
This is confusing but I think I understand what you're asking. Are you saying that in C++, when you say
a + b
you really get
a.operator+(b)
? That is, the left hand operand is the receiver of the call in C++, is it the same in C#?
No. That's not how C# works. Operators are always static; they have no receiver. Both operands are passed as arguments.
And the second question.
If you have two questions in the future please post two questions. Posting two questions in the same question is confusing.
If we want to perform this for two different types (consider object1 and object2 from different class types) where should we define the function?
It must be in one of the two classes but not both. Which one you pick is up to you.
Incidentally, I'll be discussing the differences between C++ and C# overloading of the ++
operator on my blog this Wednesday, so if this topic interests you, check it out.