Перегрузка Операторов

  • Автор темы xparen
  • Дата начала
X

xparen

Гость
#1
Здравствуйте! Есть несколько вопросов касающихся перегрузки операторов... Допустим есть класс. Осуществляеться работа с матрицами. Нужно перегрузить оператор + для нахождения суммы двух матриц. Вопрос: мне сказали, что можно поставить на return матрицу или *this(немного не понимаю как работает оператор this, объясните плз на простом примере). Какая между этими вариантами будет разница??? объясните по подробнее, на примере:
C++:
Matrix Matrix::operator +(const Matrix &A)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
b[i][j]=a[i][j]+A.a[i][j];
return *this;


}
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#2
this - это указатель на класс, в котором ты работаешь.
Т.е., например, код:
C++:
#include <stdio.h>

class test {
public:
void print() {
printf( "%8.8x\n", this );
}
};

int main()
{
test	a;
a.print();
return 0;
}
выведет на экран адрес указателя на объект a типа test. Т.е. свой собственный адрес в памяти.
 
X

xparen

Гость
#3
Спасибо. А еще такой вопрос... А в чем будет заключься разница, если я на возврат поставлю матрицу или указател this? Что правильнее использовать и почему? Просто при реализации и тем и другим методом разницы я не увидел.
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#4
А в чем будет заключься разница, если я на возврат поставлю матрицу или указател this?
Какая разница в том, поставишь ты на возврат класс Matrix или двумерный массив?! По-моему разница очевидна.