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

Операция постинкремента - C++

Восстановить пароль Регистрация
 
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 22:48     Операция постинкремента #1
Как правильно реализовать операцию постинкремента, или же в данном коде всё верно?

Меня смущает тот факт, что функция сохраняет объект "Person" в static, те не уничтожает его, ибо по другому ссылку не возможно вернуть.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Person& Person::operator ++()
{
    this->set_year(this->get_year() + 1);
 
    return *this;
}
Person& Person::operator ++(int)
{
    static Person Person(this->get_name(), this->get_lastname(), this->get_year());
 
    Person::operator++();
 
    return Person;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 22:48     Операция постинкремента
Посмотрите здесь:

Условная операция C++
Битовая операция -> C++
операция повторения C++
C++ операция <<::>>
Операция присваивания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.06.2013, 22:52     Операция постинкремента #2
постинкремент должен возвращать копию
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 22:58  [ТС]     Операция постинкремента #3
Тогда у нас будет происходить возвращение адреса временной переменной

или вы имели ввиду

C++
1
2
3
4
5
6
7
8
Person Person::operator ++(int)
{
    Person Person(this->get_name(), this->get_lastname(), this->get_year());
 
    Person::operator++();
 
    return Person;
}
Добавлено через 2 минуты
или

C++
1
2
3
4
5
6
7
8
Person& Person::operator ++(int)
{
    Person* old = new Person(this->get_name(), this->get_lastname(), this->get_year());
 
    Person::operator++();
 
    return *old;
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.06.2013, 23:01     Операция постинкремента #4
C++
1
2
3
4
5
6
7
8
Person Person::operator ++(int)
{
    Person person(*this);
 
    this->set_year(get_year() + 1);
 
    return person;
}
BumerangSP
10.06.2013, 23:05
  #5

Не по теме:

GetVariable, можно поинтересоваться? Зачем Вы используете геттеры в методах этого же класса вместо прямого обращения к переменным? В них содержатся сложные описания или что?

GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 23:07  [ТС]     Операция постинкремента #6
Цитата Сообщение от BumerangSP Посмотреть сообщение

Не по теме:

GetVariable, можно поинтересоваться? Зачем Вы используете геттеры в методах этого же класса вместо прямого обращения к переменным? В них содержатся сложные описания или что?

Действительно, наверно было избыточно применять геттеры.
Yandex
Объявления
10.06.2013, 23:07     Операция постинкремента
Ответ Создать тему
Опции темы

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