In C++, the multiplication operator is a binary operator that is used to find the product of two numeric values. In this article, we are going to learn how to overload the multiplication operator for a class in C++.
Overloading Multiplication Operator in C++
C++ provides the functionality of operator overloading which allows the user to modify the working or to define its working for a new class. To overload an operator for a class, we need to define a special function with the operator symbol as the public member function of the class.
C++ Program to Overload the Multiplication Operator
Consider a class ‘vector’ that represents the coordinate of a point in the three-dimensional plane. Now let’s overload the multiplication operator so that it can perform the cross product of two vectors.
// C++ Program to implement overload * operator without // using friend function #include <iostream> using namespace std;
class Vector {
int x, y, z;
public :
Vector( int x, int y, int z)
{
this ->x = x;
this ->y = y;
this ->z = z;
}
void getVector()
{
cout << x << "i" << showpos << y << "j" << z
<< "k\n"
<< noshowpos;
}
// Overloading * operator to perform cross product of
// two vectors, the left operand is *this object
Vector operator*(Vector const & v)
{
int x = ( this ->y * v.z) - ( this ->z * v.y);
int y = ( this ->z * v.x) - ( this ->x * v.z);
int z = ( this ->x * v.y) - ( this ->y * v.x);
return Vector(x, y, z);
}
}; // driver code int main()
{ Vector v1(2, -3, 7), v2(4, 2, -2);
cout << "Vector 1: " ;
v1.getVector();
cout << "Vector 2: " ;
v2.getVector();
// multiplying two vector
Vector v3 = v1 * v2; // Calling Operator function
cout << "Vector 3: " ;
v3.getVector();
} |
Vector 1: 2i-3j+7k Vector 2: 4i+2j-2k Vector 3: -8i+32j+16k
Explanation
Here Vector v1 is calling the operator * function with Vector v2 as argument. The result is stored in Vector v3. If we wouldn’t have defined the multiplication operator for our data type, the statement v1 * v2 might have lead to an error.