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

перегрузка операторов - C++

Восстановить пароль Регистрация
 
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
09.11.2012, 13:35     перегрузка операторов #1
Есть перечисление и функция :

C++
1
2
3
4
5
6
7
8
9
10
enum Num {
    on, tw, th, fo ,fi, si ,se, ei, ni ,last
};
 
Num wl(on);
 
Num operator++(Num& obj) {
    obj = (obj==last) ? on : Num(obj+1); // Что значит  Num(obj+1); ??? Почему нельзя  написать
    return obj;                                    // прочто obj+1   ????
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2012, 13:35     перегрузка операторов
Посмотрите здесь:

Перегрузка операторов C++
C++ Перегрузка операторов
Перегрузка операторов С++ C++
C++ перегрузка операторов
Перегрузка операторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
D.E.S.P.E.R.O.
 Аватар для D.E.S.P.E.R.O.
9 / 9 / 0
Регистрация: 12.03.2009
Сообщений: 110
Завершенные тесты: 1
09.11.2012, 13:46     перегрузка операторов #2
Потому что при операции obj + 1 происходить пртиведение типа результата к int и его нельза присвоить переменной obj, которая имеет тип Num. Поэтому используеться явное приведение типа Num(obj + 1)!
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
09.11.2012, 14:00  [ТС]     перегрузка операторов #3
Цитата Сообщение от D.E.S.P.E.R.O. Посмотреть сообщение
Потому что при операции obj + 1 происходить пртиведение типа результата к int и его нельза присвоить переменной obj, которая имеет тип Num. Поэтому используеться явное приведение типа Num(obj + 1)!
C++
1
Num(obj+1);  и (Num)obj+1;
Это все одна и таже запись ???
Приведение типов всегда писал по второму варианту
D.E.S.P.E.R.O.
 Аватар для D.E.S.P.E.R.O.
9 / 9 / 0
Регистрация: 12.03.2009
Сообщений: 110
Завершенные тесты: 1
09.11.2012, 14:03     перегрузка операторов #4
Да это все один и тот же вариант, что есть приведением типов в стиле языка С. Если пишете на С++, то лучше и правильнее использовать static_cast<Num>(obj + 1)!
Yandex
Объявления
09.11.2012, 14:03     перегрузка операторов
Ответ Создать тему
Опции темы

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