Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
soirkar
0 / 0 / 0
Регистрация: 22.06.2011
Сообщений: 20
#1

Класс Матрица, перегрузка оператора *= - C++

17.01.2012, 18:44. Просмотров 599. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
matrix& matrix :: operator *= (const matrix& x1) 
{
    if( СhM(x1) ) //СhM - проверка на возможность умножения двух матриц
    {
        *this=this*x1;
    } 
    
    else throw "ERROR"; 
    return *this;
}
Написал следующее, каким еще способом можно перегрузить оператор *= и почему первый наиболее эффективный?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2012, 18:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс Матрица, перегрузка оператора *= (C++):

Матрица n*n перегрузка оператора * - C++
Помогите найти ошибку в перегрузке *. #include <iostream> #include <Windows.h> #include <iomanip> using namespace std; ...

Класс "Матрица". Перегрузка оператора "минус" - C++
Помогите дописать программу или исправить ее. Нужно было написать программу, где создать класс матрицы, используя двухмерный динамический...

Перегрузка оператора ==, в классе Матрица - C++
#ifndef MATRIX_H #define MATRIX_H template <class T> class Matrix { public: Matrix(int Rows, int Cols); ~Matrix(); ...

Виртуальный класс и перегрузка оператора - C++
Собственно немного разобравшись в ооп написал небольшой код, по заданию нужно как-то прикрутить к нему виртуальный класс и сделать...

Класс "Матрица", перегрузка оператора "+" - C++
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор "+". На этапе компиляции всё замечательно, но при запуске программа вылетает....

Класс Матрица, перегрузка арифметических операций - C++
Не удаётся реализовать перегрузку операторов сложения, вычитания и т.д. причём не понимаю в чём именно ошибка, даже конструктор...

3
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
17.01.2012, 18:54 #2
Цитата Сообщение от soirkar Посмотреть сообщение
почему первый наиболее эффективный?
А вы второй покажите, мы ответим.
0
soirkar
0 / 0 / 0
Регистрация: 22.06.2011
Сообщений: 20
17.01.2012, 19:03  [ТС] #3
Если бы я его написал, то сравнил бы эффективность выводом сообщений о использовании конструкторов / деструкторов.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
17.01.2012, 19:07 #4
soirkar, можно продублировать код из operator*, но это может повлечь за собой одну неприятную вещь: если вдруг понадобится что-то изменить в операторе умножения, то в данном случае придётся изменить код только в одном месте, а во втором случае придётся делать изменения в обоих операторах. Неприятная эта вещь потому, что можно забыть произвести изменения в одном из операторов и получить неэквивалентную работу.
А вообще, лучше перегружать operator* на основе operator*=, а не наоборот, потому что operator* логичнее перегрузить вне класса, а чтобы не использовать friend и вообще не нарушать инкапсуляцию, эту перегрузку можно осуществить через operator*=, который обязан быть членом класса. То же относится к любым другим бинарным операторам.

Добавлено через 1 минуту
А если речь об эффективности в плане производительности, то не думаю, что такой способ более эффективный. Ведь то, что можно сделать напрямую, с сырыми данными, тут делается через дополнительные вызовы методов (operator* и operator=), что понесёт дополнительные затраты.
0
17.01.2012, 19:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2012, 19:07
Привет! Вот еще темы с ответами:

Класс "Матрица": конструктор, деструктор и перегрузка операторов - C++
Матрица – KMatrix Методы: конструкторы, деструктор; операции: , =, ==, !=,...

Класс "Дробь". Перегрузка оператора "==" - C++
template <class T> void polynomial<T>::refresh(){ //отбрасывающую старшие члены полинома с нулевыми коэффициентами int counter = 0;...

Перегрузка оператора + - C++
Доброго времени суток. Есть программа, создающая связный список, который содержит числа по возрастанию #include <iostream> enum...

Перегрузка оператора -> - C++
обясните пожалуйста как перегружать -> и для чего это нужно


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

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

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