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

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

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

Перегрузка префиксного инкремента - C++

24.05.2014, 21:23. Просмотров 352. Ответов 2
Метки нет (Все метки)

Как перегрузить префиксальный инкремент?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Horse{
    private:
        int x,y;
    public:
        Horse(void);
 
        void setX(int);
        void setY(int);
        int getX();
        int getY();
 
        bool equals(Horse&);
        bool step(int,int);
        void print(Horse&);
        void input(Horse&);
        
        ~Horse(void);
 
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Horse& operator++(Horse& h){
    h.setX(h.getX()+2);
    h.setY(h.getY()+1);
    return h;
}
 
void main(){
        Horse c1;
        cin>>c1;
    cout<<c1;
    c1++;
    cout<<c1;
    ++c1;
    cout<<c1;
}
Почему то перегружается как постфиксальный так и префиксальный, хотя по ходу я перегрузил только постфиксальный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 21:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка префиксного инкремента (C++):

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

Перегрузка инкремента - C++
Допустим, что некий класс имеет в наличии методы пре(и пост-)фиксного инкрементов. Date&amp; Date::operator++(); Date...

Перегрузка инкремента ++ - C++
Не понимаю как вызвать перегрузку инкремента: void operator ++( int m ); в функции main,какой синтаксис. Я в main циклично ввожу числа и...

Перегрузка операторов инкремента - C++
Мне надо перегрузить инкримент, я пытался сделать постфиксный и + . Я вродебы сделал, но оно почему-то не выводит.( prog.h #pragma once...

Перегрузка операции инкремента - C++
Как известно, постинкремент возвращает r-value, а преинкремент - l-value. То есть: ++(++x); // допустимо (x++)++; // ошибка...

Перегрузка постфиксной и префиксной операции инкремента - C++
Здравствуйте! У меня возник вопрос: почему выводит разный результат, казалось бы, одинаковый код Вот здесь выводит как должно: ...

2
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
24.05.2014, 21:36 #2
C++
1
2
3
4
5
Horse& operator++(Horse& h,int){// для префиксного инкремента добавляется фиктивный параметр int
    h.setX(h.getX()+2);
    h.setY(h.getY()+1);
    return h;
}
Но лучше сделать его членом класса
C++
1
2
3
4
5
6
Horse& operator++(int)
{
    this->setX(this->getX()+2);
    this->setY(this->getY()+1);
    return *this;
}
1
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
24.05.2014, 21:42 #3
Цитата Сообщение от zss Посмотреть сообщение
для префиксного инкремента добавляется фиктивный параметр int
наоборот, фиктивный параметр добавляется для постфиксного инкремента
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 21:42
Привет! Вот еще темы с ответами:

Перегрузка оператора инкремента/декремента через friend - C++
Нужно реализовать перегрузку унарного оператора через friend. Что я пытаюсь сделать: friend void operator -- ();//prototype void...

Особенности инкремента - C++
Здравствуйте!Возник вопрос касательно операции инкремента(++) допутим у нас есть код #include &lt;iostream&gt; int main() { ...

Секреты инкремента - C++
Пожалуйста!!! помогите! Умоляю!:help: i=5; j=(++i) + (++i): Чему равно j?; пожалуйста обьясните как это решается, ну или...

Переопределение оператора инкремента - C++
В теле класса &quot;Сlocks&quot; описали: Clocks&amp; operator ++(); // Prefix increment operator. Clocks operator ++(int); // Postfix...


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

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

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