Phương thức toán tử bị sai

Cho em hỏi theo như em biết phương thức toán tử này có 2 cách trình bày là :
VD :

tamthuc operator -()
    {
        tamthuc t;
        t.a=-a;
        t.b=-b;
        t.c=-c;
        return t;
    };
//Cách 2
// a=-a;
// b=-b;
// c=-c;
// return *this; 

Nhưng khi em làm cách 1 với phương thức đổi dấu mảng 2 chiều

matrix operator-()
    {
        matrix z;
        for(int i=0; i<n; i++)
            for(int j=0; j<m; j++)
                z.a[i][j]=-(z.a[i][j]);
        return z;

    };

thì nó bị lỗi và em làm như cách 2 :

 for(int i=0; i<n; i++)
 for(int j=0; j<m; j++)
 a[i][j]=-a[i][j];
 return *this;

Thì lại chạy được ạ
Các anh cho em hỏi sự khác biệt với ạ.

Cách 1 là sai rồi :smiley: bạn phải thao tác với đối tượng ngầm định *this.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?