Ich versuche Operator Overloading
in C++ zu lernen.Ich addiere zwei Matrizen mit Operator Overloading
Konzept. Ich verwende die Anweisung t3=t1+t2;
, um die überladene Methode aufzurufen.Warum gibt der folgende C++ Code diese Ausgabe?
Aber das o/p ist nicht wie erwartet. Die O/P-Matrix kommt heraus wie die zweite Matrix.Ich kann nicht verstehen, warum.
Hier ist der Code.
#include<iostream>
using namespace std;
int m,n;
class test
{
int a[][10];
public:
void get()
{
cout<<"enter matrix elements"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
}
}
}
void print()
{
cout<<"matrix is as follows "<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
}
test operator + (test t2)
{
test temp;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
temp.a[i][j]=a[i][j]+t2.a[i][j];
}
}
return temp;
}
};
int main()
{
cout<<"enter value of m and n"<<endl;
cin>>m;
cin>>n;
test t1;
t1.get();
test t2;
t2.get();
t1.print();
t2.print();
test t3;
t3=t1+t2;
t3.print();
return 0;
}
Der o/p ---
G:\>a.exe
enter value of m and n
2
2
enter matrix elements
1
1
1
1
enter matrix elements
2
2
2
2
matrix is as follows
2 2
2 2
matrix is as follows
2 2
2 2
third matrix is as follows
2 2
2 2
Wenn Ihr Compiler * Sie nicht über das 'int a [] [10];' flexible Array-Member gewarnt hat, das in einem C++ - Programm verwendet wird, schlage ich vor, dass Sie die Warnungen Ihres Compilers auffrischen. – WhozCraig
Sie kopieren 'test' Objekte an vielen Stellen ohne Kopieroperatoroperator ... – jpo38
da nur die Spaltenlänge benötigt wird, deshalb gebe ich nur die Spaltenlänge an. – a874