Mega Code Archive

 
Categories / Visual C++ .NET / Class
 

Operator Overload Demo

#include "stdafx.h" using namespace System; ref class MyClass{ public:     MyClass() : i(0) {}     MyClass(int x) : i(x) {}     // x != y     static bool operator !=(const MyClass ^lhs, const MyClass ^rhs)     {         return lhs->i != rhs->i;     }     // x * y     static MyClass^ operator *(const MyClass ^lhs, const MyClass ^rhs)     {         MyClass^ ret = gcnew MyClass();         ret->i = lhs->i * rhs->i;         return ret;     }     // x *= y     static void operator *=(MyClass ^lhs, const MyClass ^rhs)     {         lhs->i *= rhs->i;     }     // -x     static MyClass^ operator -(const MyClass ^lhs)     {         MyClass^ ret = gcnew MyClass();         ret->i = -(lhs->i);         return ret;     }     // ++x and x++     static MyClass^ operator ++(const MyClass ^lhs)     {         MyClass^ ret = gcnew MyClass();         ret->i = (lhs->i) + 1;                               return ret;       }     virtual String ^ ToString() override     {         return i.ToString();     } private:     int i; }; void main() {     MyClass ^op1 = gcnew MyClass(3);     MyClass ^op2 = gcnew MyClass(5);     MyClass ^op3 = gcnew MyClass(15);    if ( op1 * op2 != op3)        Console::WriteLine("not Equal");    else        Console::WriteLine("Equal");     op1 *= op2;     Console::WriteLine(op1);     Console::WriteLine(++op1);     Console::WriteLine(op1++);     Console::WriteLine(-op1);      Console::WriteLine(op1);   }