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

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

Войти
Регистрация
Восстановить пароль
 
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
#1

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

30.07.2015, 17:33. Просмотров 233. Ответов 8
Метки нет (Все метки)

Собственно преследуемая цель:
Определить свой тип int - myint.
Переопределить для него операторы как надо. Ну, например, надо мне при операции сложения не алгебраически складывать значения, а извранически: 0x0203 + 0x0501 = 0x0308.

Или же иной способ создания своего типа со своими операциями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2015, 17:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возможно ли переопределение операторов для пользовательских типов? (C++):

Шаблон для пользовательских типов данных - C++
В общем имееются две функции. Одна принимает тип данных string другая char. Функции выполняют одну и ту же задачу. Вопрос как сделать...

Обработка исключений в классах для пользовательских типов - C++
Здорова господа! Запустил токо класс String тестю и тут у меня вылетело исключение выход за пределы индекса, и программа тупо аварийно...

Переопределение операторов - C++
Еще раз об этом интересном вопросе. У меня есть матрицы , условно назовём их тип matrix, есть библиотека, имеющая в своём составе функции...

Переопределение операторов - C++
Плиз помогите сделать задачку.. Написать класс StrangeInt для которого нижеследующий код StrangeInt x = 5; StrangeInt y = 3; ...

переопределение операторов - C++
Писал прогу с переопределнием операторов, всё работало, теперь когда мне понадобилась та либа, в ней ничего не работает =( ...

переопределение операторов - C++
Стоит следующая задача. Надо сделать массив чар, которые представляют собой строку (специально делать так, а не через string) и надо...

8
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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
};
0
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
30.07.2015, 18:02  [ТС] #3
хз. Переполнение стека
0
Enno
266 / 169 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
30.07.2015, 18:36 #4
Тут не такие крутые хацкеры чтобы в монитор к тебе глядеть. Листинг давай.
0
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
30.07.2015, 18:58  [ТС] #5
C++
1
2
3
    res operator+ ( const res& a ){
        return *this + a;
    }
Хотя бы это, будет вызывать рекурсию.
0
DrOffset
7349 / 4449 / 1009
Регистрация: 30.01.2014
Сообщений: 7,293
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;
};
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.07.2015, 19:04 #7
Цитата Сообщение от Eraston Посмотреть сообщение
Хотя бы это, будет вызывать рекурсию.
Это логично. А зачем ты так пишешь? В чём сакральный смысл этой записи?
0
Enno
266 / 169 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
30.07.2015, 19:08 #8
Цитата Сообщение от Eraston Посмотреть сообщение
Хотя бы это, будет вызывать рекурсию.
Окей, ты разобрался и сообщил нам. Теперь поправь.
0
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
30.07.2015, 19:14  [ТС] #9
В общем, ок. Спасибо, возьму на заметку.
Просто сейчас подумал, в моём случае оно по сути и не нужно =)

Добавлено через 3 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
return A(mval + a.mval);
Не совсем очевидный момент для меня оказался, действительно, сложение складываемого со слагаемым вызывает сложение складываемого со слагаемым вызывает... Потом догнал, что слагаемые надо складывать в третью величину.
0
30.07.2015, 19:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2015, 19:14
Привет! Вот еще темы с ответами:

Переопределение операторов - C++
Доброго времени суток.. В древние времена, когда ещё жили мамонты, ковырял я потихоньку плюсы.. Потом был долгий перерыв, и, как итог -...

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

Преобразование пользовательских типов - C++
Здравствуйте. Помогите с одним вопросом, это пример из книги Лафоре ООП С++, не могу разобраться как работают функции int getHrs() const ...

Преобразование пользовательских типов - C++
Добрый день. Суть проблемы такова. Есть 2 класса. Преобразовать через оператор получается. А через конструктор нет. Причем ошибка...


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

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

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