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

Возможно ли переопределение операторов для пользовательских типов? - C++

Восстановить пароль Регистрация
 
Eraston
 Аватар для Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 123
30.07.2015, 17:33     Возможно ли переопределение операторов для пользовательских типов? #1
Собственно преследуемая цель:
Определить свой тип int - myint.
Переопределить для него операторы как надо. Ну, например, надо мне при операции сложения не алгебраически складывать значения, а извранически: 0x0203 + 0x0501 = 0x0308.

Или же иной способ создания своего типа со своими операциями.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2015, 17:33     Возможно ли переопределение операторов для пользовательских типов?
Посмотрите здесь:

C++ Переопределение операторов
C++ Переопределение операторов
C++ Переопределение операторов
переопределение операторов C++
C++ Обработка исключений в классах для пользовательских типов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.07.2015, 17:38     Возможно ли переопределение операторов для пользовательских типов? #2
Eraston, Возможно.
C++
1
2
3
4
5
6
7
class A
{
public:
   A operator + (const A&);
   A operator * (const A&);
   // etc
};
Eraston
 Аватар для Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 123
30.07.2015, 18:02  [ТС]     Возможно ли переопределение операторов для пользовательских типов? #3
хз. Переполнение стека
Enno
265 / 168 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
30.07.2015, 18:36     Возможно ли переопределение операторов для пользовательских типов? #4
Тут не такие крутые хацкеры чтобы в монитор к тебе глядеть. Листинг давай.
Eraston
 Аватар для Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 123
30.07.2015, 18:58  [ТС]     Возможно ли переопределение операторов для пользовательских типов? #5
C++
1
2
3
    res operator+ ( const res& a ){
        return *this + a;
    }
Хотя бы это, будет вызывать рекурсию.
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
30.07.2015, 19:04     Возможно ли переопределение операторов для пользовательских типов? #6
Цитата Сообщение от Eraston Посмотреть сообщение
Хотя бы это, будет вызывать рекурсию.
Естественно. Но перегрузка тут не при чем, написанное - исключительно воля программиста, т.е. тебя. Ты захотел сделать рекурсию, ты ее сделал

Даю подсказку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
public:
    A(int val) : mval(val) {}
 
    A operator + (const A& a) const
    {
         return A(mval + a.mval);
    }
private:
    int mval;
};
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.07.2015, 19:04     Возможно ли переопределение операторов для пользовательских типов? #7
Цитата Сообщение от Eraston Посмотреть сообщение
Хотя бы это, будет вызывать рекурсию.
Это логично. А зачем ты так пишешь? В чём сакральный смысл этой записи?
Enno
265 / 168 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
30.07.2015, 19:08     Возможно ли переопределение операторов для пользовательских типов? #8
Цитата Сообщение от Eraston Посмотреть сообщение
Хотя бы это, будет вызывать рекурсию.
Окей, ты разобрался и сообщил нам. Теперь поправь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2015, 19:14     Возможно ли переопределение операторов для пользовательских типов?
Еще ссылки по теме:

C++ переопределение операторов
C++ Переопределение операторов С++
Шаблон для пользовательских типов данных C++

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

Или воспользуйтесь поиском по форуму:
Eraston
 Аватар для Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 123
30.07.2015, 19:14  [ТС]     Возможно ли переопределение операторов для пользовательских типов? #9
В общем, ок. Спасибо, возьму на заметку.
Просто сейчас подумал, в моём случае оно по сути и не нужно =)

Добавлено через 3 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
return A(mval + a.mval);
Не совсем очевидный момент для меня оказался, действительно, сложение складываемого со слагаемым вызывает сложение складываемого со слагаемым вызывает... Потом догнал, что слагаемые надо складывать в третью величину.
Yandex
Объявления
30.07.2015, 19:14     Возможно ли переопределение операторов для пользовательских типов?
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru