C++ Question: Hello, i am working on a Matrix class with overloading operators.
ID: 3820795 • Letter: C
Question
C++ Question:
Hello, i am working on a Matrix class with overloading operators. I am currently stuck on initializing the 2d array in the constructors and also stuck on the operator<< overloading. I have a class with this as one of the members:
friend ostream& operator<<(ostream&, const Matrix&); // In matrix class
ostream& operator <<(ostream& lhs, const Matrix& rhs) // Function itself
{
lhs << rhs.matrixArray[2][2];
return lhs;
}
This is not correct. this psuedo code should be something like:
for i:
for j:
lhs<<array[i][j]
Explanation / Answer
The subscript operator [] is normally used to access array elements.
This operator can be overloaded to enhance the existing functionality of C++ arrays.
Following example explains how a subscript operator [] can be overloaded.
#include <iostream>
using namespace std;
const int SIZE = 10;
class safearay
{
private:
int arr[SIZE];
public:
safearay()
{
register int i;
for(i = 0; i < SIZE; i++)
{
arr[i] = i;
}
}
int &operator[](int i)
{
if( i > SIZE )
{
cout << "Index out of bounds" <<endl;
// return first element.
return arr[0];
}
return arr[i];
}
};
int main()
{
safearay A;
cout << "Value of A[2] : " << A[2] <<endl;
cout << "Value of A[5] : " << A[5]<<endl;
cout << "Value of A[12] : " << A[12]<<endl;
return 0;
}
Operator overloading allows you to define the way operator works (the way you want).
In the above example, ++ operator operates on object to increase the value of data member count by 1.
void operator ++()
{
count = count+1;
}
However, if you use the following code. It decreases the value of count by 100 when ++ operator is used.
void operator ++()
{
count = count-100;
}
This may be technically correct. But, this code is confusing and, difficult to understand and debug.
It's your job as a programmer to use operator overloading properly and in consistent way.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.