私はOperator Overloading
をC++で学ぼうとしています。Operator Overloading
という概念を使って2つの行列を追加しています。 オーバーロードされたメソッドを呼び出すために、t3=t1+t2;
というステートメントを使用しています。次のC++コードではなぜこの出力が得られますか?
しかし、o/pは期待通りではありません。o/p行列は2番目の行列と同じです。理由を理解できません。
ここにコードがあります。
#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;
}
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
C++プログラムで使用されている 'int a [] [10];'というフレキシブルな配列メンバーについて警告していない*場合は、コンパイラの警告を出すことをお勧めします。 – WhozCraig
コピーコンストラクタ演算子なしで 'test'オブジェクトを多くの場所にコピーしています... – jpo38
は、カラムの長さだけが必要なので、カラムの長さだけを指定しています。 – a874