注册 登录
编程论坛 C++教室

运算符重载,编译没错,为什么结果不对呢?多谢帮忙看看。

ybjkl 发布于 2012-02-27 13:10, 475 次点击
#include"iostream.h"
class Matrix
{
    int matrix[3][3];
public:
    Matrix();
    friend Matrix operator+(Matrix &a,Matrix &b);
    friend ostream & operator<<(ostream &os,Matrix &m);
    friend istream & operator>>(istream &is,Matrix &m);
};

Matrix::Matrix()
{
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            matrix[i][j]=0;
}

Matrix operator+(Matrix &a,Matrix &b)
{
    Matrix c;
        for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            c.matrix[i][j]=a.matrix[i][j]+b.matrix[i][j];
        return c;
}

ostream & operator <<(ostream &os,Matrix &m)
{
    for(int i=0;i<3;i++)
    {
        for(int j=0;i<3;j++)
            os<<m.matrix[i][j]<<" ";
        os<<endl;
    }
    return os;
}

istream & operator >>(istream &is,Matrix &m)
{
    cout<<"请输入矩阵数据:"<<endl;
        for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            is>>m.matrix[i][j];
        return is;
}

void main()
{
    Matrix m,m1,m2;
    cin>>m1;
    cin>>m2;
    cout<<"Matrix m1:\n"<<m1<<endl;
    cout<<"Matrix m2:\n"<<m2<<endl;
    m=m1+m2;
    cout<<"Matrix m1+m2=\n"<<m<<endl;
}
5 回复
#2
飞扬_余2012-02-27 13:56
新手,也学学
#3
ybjkl2012-02-27 20:37
没人帮忙看看吗?
#4
pangding2012-02-28 02:25
程序代码:
ostream & operator <<(ostream &os,Matrix &m)
{
    for(int i=0;i<3;i++)
    {
        for(int j=0;i<3;j++)    // i < 3 的话,你觉得这个循环还有希望吗?
            os<<m.matrix[i][j]<<" ";
        os<<endl;
    }
    return os;
}
#5
mayuebo2012-02-28 08:05
仔细
#6
ybjkl2012-02-28 13:38
唉,真想抽自己几下,多谢啦,嘻嘻
1