Program for Matrix Multiplication in C++ using Operator Overloading :
We will now try to multiply two matrix by using the concept of operator overloading. The described way is very very easy to understand. We will be overloading "*" operator for this purpose. Although this can be done by any binary operator.
We will start with a basic class Matrix. In this example we will take a 3x3 matrix.
Description:
Code:
We will now try to multiply two matrix by using the concept of operator overloading. The described way is very very easy to understand. We will be overloading "*" operator for this purpose. Although this can be done by any binary operator.
We will start with a basic class Matrix. In this example we will take a 3x3 matrix.
Description:
- class Matrix has a constructor that will initialize its element to 0.
- also has a set() function that can be used to set values in the Matrix.
- A show() function shows the matrix.
- operator overloading definition for "*" operator.
Code:
#include<iostream> using namespace std; class matrix { public: int a[3][3]; matrix()//default constructor { for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { a[i][j]=0; } } } void set()// to set matrix elements { for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cout<<"\n Enter "<<i<<","<<j<<" element="; cin>>a[i][j]; } } } void show()// to show matrix elements { cout<<"\n Matrix is=\n"; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cout<<a[i][j]<<","; } cout<<"\n"; } } /* binary * operator will require one more arg, since it is a binary operator one arg is the object itself that will call it, other will be passed as arg(in this case x). also this will return a matrix object */ matrix operator*(matrix x)// overloading * for multiplication { matrix c;// this will hold our result for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { c.a[i][j]=0; for(int k=0;k<3;k++) { c.a[i][j]=c.a[i][j]+a[i][k]*x.a[k][j]; } } } return(c); } }; int main() { matrix a,b,c; a.set(); b.set(); c=a*b; /* note that compiler will break this statement as c=a.operator*(b); this is how 2nd arg is passed. and this is how object "a" acts as the calling object */ a.show(); b.show(); c.show(); }