Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
#1

Переопределение операций - C++

14.01.2012, 10:45. Просмотров 1679. Ответов 13
Метки нет (Все метки)

Здравствуйте, необходимо осуществить переопределение операции сложения, не понимаю как применять на практике переопределение, заранее спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Matr Matr::operator + (Matr const &right)
{   
             cout  << "Sloschenie\n\n";
             Matr mM;
             mM.N=right.N;
             mM.M=right.M;
             int one=0;
             for(int i = 0; i < N;i++)
                for(int j = 0; j < M;j++)
                {
                       one=right.Get(i,j)+Get(i,j);
                       mM.Add(i, j, one);
                } 
             return mM; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2012, 10:45     Переопределение операций
Посмотрите здесь:

Переопределение операций - C++
Люди, помогите разобраться, не совсем все понимаю. Эта программа представляет класс комплексных чисел с переопределенными функциями...

Переопределение операций - C++
Арифметику класса реализовать в виде стандартного набора переопределенных операций с &quot;арифметической&quot; интерпретацией-результ операции-новый...

Переопределение операций - C++
У меня есть класс, который хранит коэффициенты полинома, вычисляет его. Я попытался добавить оператор суммы (который по моей версии должен...

Переопределение операций - C++
Ситуация такая. В классе матриц переопределён оператор взятия индекса: float operator() (int row, int column) const; Сами...

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

Переопределение операций со строками - C++
Операция переопределения Замена в строке первых n символов на символ с наименьшим кодом из входящих в строку почему-то работает...

Переопределение стандартных операций - C++
Рациональная (несократимая) дробь представляется парой целых чисел (а, b), где а — числитель, b — знаменатель. Создать класс Rational для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
14.01.2012, 10:48     Переопределение операций #2
Вроде бы все нормально в вашем коде. Что именно вы не понимаете?
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 11:50  [ТС]     Переопределение операций #3
что именно является переопределением этой операции? то что она вызывается символом "+" ?
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.01.2012, 11:53     Переопределение операций #4
Вы оператор + перегрузили
dimcoder
Полярный
455 / 428 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
14.01.2012, 11:53     Переопределение операций #5
Может перегрузка)
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 11:59  [ТС]     Переопределение операций #6
%) а переопределение и перегрузка это не одно и то же?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
14.01.2012, 12:03     Переопределение операций #7
Одно и тоже.

Добавлено через 53 секунды
Что значит как применять? Берете одну матрицу и складываете с другой. matr3=matr1+matr2.
dimcoder
Полярный
455 / 428 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
14.01.2012, 12:05     Переопределение операций #8
Цитата Сообщение от xbifx Посмотреть сообщение
Здравствуйте, необходимо осуществить переопределение операции сложения, не понимаю как применять на практике переопределение, заранее спасибо!
C++
1
Matr Matr::operator + (int x){}//Вместо int x - то что должно быть справа оператора +
go
14.01.2012, 12:12
  #9

Не по теме:

Цитата Сообщение от Chelioss Посмотреть сообщение
matr3=matr1+matr2.
Ну еще оператор = перегрузить надо

xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 12:57  [ТС]     Переопределение операций #10
ну = у меня перегружено

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Matr::operator = (Matr const &right)
{
     if((N==right.N)&&(M==right.M))
     {
            N=right.N;
            M=right.M;
          int one=0;
          for(int i = 0; i < N;i++)
              for(int j = 0; j < M;j++)
              {
                   one=right.Get(i,j);
                   Add(i, j, one);
              } 
     }
     else
     {
          cout << endl << "Matrici ne ravni, operacia ' = ' ne moget bit vipolnena" << endl;
     }
     return;
}
если это правильно, то вопросов нет, спасибо всем)

Добавлено через 2 минуты
А не, еще 1 вопрос остался:
операция сложения,
C++
1
Matr operator + (Matr const &);
вызываю так MM=Mm+mM

почему ей передается лишь 1 операнд, ведь сложение происходит 2х объектов?
dimcoder
Полярный
455 / 428 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
14.01.2012, 12:58     Переопределение операций #11
Левый операнд - всегда объект вашего типа, то есть Matr.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.01.2012, 13:01     Переопределение операций #12
Цитата Сообщение от xbifx Посмотреть сообщение
почему ей передается лишь 1 операнд, ведь сложение происходит 2х объектов?
Второй передается неявно.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.01.2012, 13:01     Переопределение операций #13
Цитата Сообщение от xbifx Посмотреть сообщение
если это правильно, то вопросов нет
Чтобы было правильно
C++
1
2
3
4
5
Matr & Matr::operator = (Matr const &right)
{
    ...
    return *this;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 13:22     Переопределение операций
Еще ссылки по теме:

Переопределение операций сложения, инкремента - C++
Лабораторная работа 2 Тема: Переопределение операций. Дружественные функции. Задания на лабораторную работу Для класса из лаб....

Переопределение операций в одномерном массиве - C++
Помогите, пожалуйста, написать программу! А) Создать класс одномерный массив целых чисел. ( класс содержит: - свойства: 1)...

переопределение - C++
Необходимо реализовать класс Stack, соответствующий стеку чисел. Для хранения стека внутри класса используется массив. Размер массива...

Переопределение оператора ++ - C++
Необходимо переопределить оператор ++ в классе IteratorBase так, чтобы при этом вызывалась функция next(). template &lt;class T&gt; ...

переопределение operator[] - C++
я унаследовался вот так: template &lt;class TKey, class TData&gt; class fixedSizeCache: public std::map&lt;TKey, stCache&lt;TData&gt;&gt; { ...


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

Или воспользуйтесь поиском по форуму:
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 13:22  [ТС]     Переопределение операций #14
Все сдал, всем спасиб большое)
Yandex
Объявления
14.01.2012, 13:22     Переопределение операций
Ответ Создать тему
Опции темы

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