• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

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

xparen

Здравствуйте! Есть несколько вопросов касающихся перегрузки операторов... Допустим есть класс. Осуществляеться работа с матрицами. Нужно перегрузить оператор + для нахождения суммы двух матриц. Вопрос: мне сказали, что можно поставить на 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;


}
 
L

lazybiz

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

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

lazybiz

А в чем будет заключься разница, если я на возврат поставлю матрицу или указател this?
Какая разница в том, поставишь ты на возврат класс Matrix или двумерный массив?! По-моему разница очевидна.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!