Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
enoka
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 19
1

Чем "operator *=" отличается от "operator *"?

21.04.2011, 00:53. Просмотров 466. Ответов 4
Метки нет (Все метки)

снова застряла, не могу понять, чем этот оператор должен отличаться от оператора*.....?
вот он, но это работает только в случае оператора*.

C++
1
2
3
4
5
6
7
8
9
10
Matrix Matrix::operator*=(double x)
{
        Matrix rezult(*this);
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
             rezult.matr[i][j]*=x;
            }
        return rezult;
}
очень странно, что при выводе результата в операторе, результат правильный, а когда этот результат возвращается в main, в b*=2, выводит только матрицу b
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2011, 00:53
Ответы с готовыми решениями:

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число"
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс,...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить...

Expected init-declarator before "operator".expected `,' or `;' before "operator"
Пример не мой. Пытаюсь у себя запустить и чтото неполучается. Ошибка на строке...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую...

4
Ma3a
Эксперт С++
619 / 463 / 57
Регистрация: 28.01.2011
Сообщений: 605
21.04.2011, 01:10 2
Логика этого оператора такова, что он должен умножить самого себя на число, а у вас это выглядит как оператор *, то есть создается временный объект , умножается на 2 и возвращается, а здесь нужно в конечном счете еще и присвоить результат объекту в *this.

Правильнее будет сделать так
C++
1
2
3
4
5
6
7
8
9
Matrix& Matrix::operator*=(double x)
{
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
             (*this)[i][j]*=x;
            }
        return *this;
}
0
enoka
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 19
21.04.2011, 01:24  [ТС] 3
Цитата Сообщение от Ma3a Посмотреть сообщение
Правильнее будет сделать так
C++
1
2
3
4
5
6
7
8
9
Matrix& Matrix::operator*=(double x)
{
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
             (*this)[i][j]*=x;
            }
        return *this;
}
вот что-то это не работает у меня.....
0
Ma3a
Эксперт С++
619 / 463 / 57
Регистрация: 28.01.2011
Сообщений: 605
21.04.2011, 01:29 4
enoka, не доглядел чуток, вот так тогда

C++
1
2
3
4
5
6
7
8
9
Matrix& Matrix::operator*=(double x)
{
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
             this->matr[i][j]*=x;
            }
        return *this;
}
1
enoka
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 19
21.04.2011, 09:42  [ТС] 5
вот это уже работает)))
спасибо)
0
21.04.2011, 09:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2011, 09:42

Вывод строки с cout: IntelliSense: no operator "<<" matches these operands
ошибку выдает 3 IntelliSense: no operator &quot;&lt;&lt;&quot; matches these operands ...

no operator found which takes a right/left-hand operand of type "AR"
Нашел на форуме исходник программы, собрал, но выдает ошибку описанную выше...

Написать перегрузку operator+() для класса "Массив"
Добрый день, Подскажите, как выйти правильно из ситуации: Array&amp;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru