1 / 1 / 2
Регистрация: 27.10.2009
Сообщений: 109

Перегрузка оператора

23.04.2013, 16:41. Показов 1332. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите разобраться с перегрузкой операторов.
Суть задания: Осуществите перегрузку оператора “++” так, чтобы при его использовании к объекту прибавляется 2

Перегрузку вроде осуществил, но как сделать чтобы добавлялось 2, не понял.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// lab17.cpp: определяет точку входа для консольного приложения.
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <locale>
 
 
using namespace std;
 
 
class Integer {
private:
    
public:
    int value;
    Integer(int i): value(i)
    {}
    friend const Integer& operator++(Integer& i) // or right 
    {
        //if (operator++(Integer& i))
        //return i+2;
    }
    friend const Integer& operator++(Integer& i, int){
        
        //return i+2;
    }
};
int main()
{
    int a;
    setlocale(LC_ALL, "RUSSIAN");
    cout<<"Введите a: ";
    cin >> a;
    a++;
    cout<<"Элемент после преобразования: "<<a;
    getch();
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2013, 16:41
Ответы с готовыми решениями:

Перегрузка оператора +
Добрый день, товарищи программиста. Вопрос такой. Я перезагружаю оператор + на языку с++, и написал класс и метод class Complex ...

Перегрузка оператора ~
Доброго времени суток! Помогите пожалуйста с решением задачи. Описать класс множество целых чисел. Перегрузить следующую операцию: ~...

Перегрузка оператора +
Ребзя,помогите с задачкой на с++,из за дистанционного тему вообщене понял Задание:Дан двумерный массив.Перегрузите дляэтого вектора...

10
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
23.04.2013, 16:44
IAmHated,
C++
1
2
i += 2; //для преинкремента
return i;
C++
1
2
 i += 2;
return i-2; //для постинкремента
или
C++
1
2
3
int x = i;
i += 2;
return x; //для постинкремента
Разве нет?
1
1 / 1 / 2
Регистрация: 27.10.2009
Сообщений: 109
23.04.2013, 17:12  [ТС]
Разве нет?
Вроде нет, так не работает
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
23.04.2013, 17:26
IAmHated, тфу, вместо i в моем примере запиши value
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.04.2013, 17:33
Цитата Сообщение от IAmHated Посмотреть сообщение
Суть задания: Осуществите перегрузку оператора “++”
Вам префиксный или постфиксный:
C++
1
2
3
4
5
6
7
8
9
Integer& operator++(){//префиксная
value+=2;
return *this;
}
Integer& operator++(int){//постфиксная
Integer toRet=*this;
++(*this);//через префиксную
return toRet;
}
0
1 / 1 / 2
Регистрация: 27.10.2009
Сообщений: 109
23.04.2013, 21:49  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вам префиксный или постфиксный:
C++
1
2
3
4
5
6
7
8
9
Integer& operator++(){//префиксная
value+=2;
return *this;
}
Integer& operator++(int){//постфиксная
Integer toRet=*this;
++(*this);//через префиксную
return toRet;
}
Если так, то все равно не добавляет +2, а только +1.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <locale>
 
 
using namespace std;
 
 
class Integer {
private:
    
public:
    int value;
    Integer(int i): value(i)
    {}
    Integer& operator++(){ //префиксная
    value+=2;
    return *this;
    }
    Integer& operator++(int){ //постфиксная
    Integer toRet=*this;
    ++(*this);//через префиксную
    return toRet;
}
};
int main()
{
    int a;
    setlocale(LC_ALL, "RUSSIAN");
    cout<<"Введите a: ";
    cin >> a;
    a++;
    cout<<"Элемент после преобразования: "<<a;
    getch();
    return 0;
}
Добавлено через 41 секунду
Цитата Сообщение от IAmHated Посмотреть сообщение
Если так, то все равно не добавляет +2, а только +1.
Может я что то не так делаю?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.04.2013, 22:03
Цитата Сообщение от IAmHated Посмотреть сообщение
Может я что то не так делаю?
Есть подозрение. Попробуйте инкрементировать переменную (экземпляр) класса для которого перегрузили (вручную!) столько операторов. Инт переменную лучше не инкрементируйте.
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
   
    setlocale(LC_ALL, "RUSSIAN");
    //cout<<"Введите a: ";// Вы не перегружали ввод>> так что задайте в тексте:
     Integer a=123;//только при инициализации так как конструктор преобразования с одним парам-ром у вас есть, а operator= - нет 
    a++;
    cout<<"Элемент после преобразования: "<<a;
    getch();
    return 0;
}
0
1 / 1 / 2
Регистрация: 27.10.2009
Сообщений: 109
24.04.2013, 13:36  [ТС]
C++
1
cout<<"Элемент после преобразования: "<<a;
Теперь в этой строке выдает ошибку,
Code
1
3 IntelliSense: отсутствует оператор "<<", соответствующий этим операндам
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
24.04.2013, 14:10
Цитата Сообщение от IAmHated Посмотреть сообщение
Теперь в этой строке выдает ошибку,
Code
1
3 IntelliSense: отсутствует оператор "<<", соответствующий этим операндам
У Вас классный ник.)
Зачем Вам выводить >>a если у Вас нет перегруженного >> для класса Integer?
Почему бы Вам не почитать хоть страничку о классах? Доступ к value у Вас через экземпляр: a.value. Хотите посмотреть, что вышло после инкремента (125), пишите:
cout<<a.value;
1
1 / 1 / 2
Регистрация: 27.10.2009
Сообщений: 109
24.04.2013, 14:54  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
У Вас классный ник.)
Зачем Вам выводить >>a если у Вас нет перегруженного >> для класса Integer?
Почему бы Вам не почитать хоть страничку о классах? Доступ к value у Вас через экземпляр: a.value. Хотите посмотреть, что вышло после инкремента (125), пишите:
cout<<a.value;
Спасибо за помощь!
Будем читать.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
24.04.2013, 15:34
Цитата Сообщение от IAmHated Посмотреть сообщение
Спасибо за помощь!
Удачи!
Простите, я вчера тоже прозевал. Что вводить нельзя через экземпляр, - написал, а вывод не посмотрел.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2013, 15:34
Помогаю со студенческими работами здесь

Перегрузка оператора
Доброго времени суток! Помогите, пожалуйста, с решением задачи: Описать класс множество целых чисел. Перегрузить следующую операцию: +...

Перегрузка оператора ->
Для чего она вообще и как её использовать? Черканите, если не трудно, &quot;детский&quot; примерчик !

Перегрузка оператора
#include &lt;iostream&gt; class Node { public: char *s; int length; Node * next; public: Node(); Node(char* val) {

Перегрузка оператора +
Всем привет, проблема на этот раз такая. Для того, чтобы выучить классы, я пишу некое подобие класса string. Сложность вот в чем. Возникла...

Перегрузка оператора '='
Не давно стал изучать С++ и дошёл до перегрузок операторов, и с книги написал пример, и не могу в полной мере его понять, объясните...


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

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

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru