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

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

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

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

24.05.2014, 21:23. Просмотров 319. Ответов 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;
}
Почему то перегружается как постфиксальный так и префиксальный, хотя по ходу я перегрузил только постфиксальный
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 21:23     Перегрузка префиксного инкремента
Посмотрите здесь:

Секреты инкремента C++
C++ Перегрузка оператора инкремента/декремента через friend
C++ Перегрузка операции инкремента
Особенности инкремента C++
C++ Перегрузка постфиксной и префиксной операции инкремента
C++ Перегрузка префиксного оператора инкремента с возвращающим значением
C++ Переопределение операции инкремента
Перегрузка инкремента ++ C++
Перегрузка операторов инкремента C++
Ассоциативность инкремента декремента C++
C++ Перегрузка инкремента
C++ Оператор перегрузки инкремента

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 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;
}
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,466
Записей в блоге: 2
Завершенные тесты: 1
24.05.2014, 21:42     Перегрузка префиксного инкремента #3
Цитата Сообщение от zss Посмотреть сообщение
для префиксного инкремента добавляется фиктивный параметр int
наоборот, фиктивный параметр добавляется для постфиксного инкремента
Yandex
Объявления
24.05.2014, 21:42     Перегрузка префиксного инкремента
Ответ Создать тему
Опции темы

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