Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2014, 11:00   #1
Студ
Пользователь
 
Регистрация: 20.03.2014
Сообщений: 35
По умолчанию Приведение типа?

Есть класс А, его подкласс В.
В методе подкласса В есть строка
Return ((B*) A::metodA(parametr);
Что такое (В*) - приведение типа? Если да, то как мы можем по умолчанию приводить к абстрактному типу? (В коде нет явного описания оператора приведения...) Если нет - то что это?
Пс: metodA потусловию должен возвращать А*...
Студ вне форума Ответить с цитированием
Старый 11.04.2014, 13:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

зависит от того что за metodA
Цитата:
Мы приводим к указателю на абстрактный класс.
пропустил что указатель
да все ок там.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 11.04.2014 в 13:05.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.04.2014, 13:03   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Да. Это приведение типа. Мы приводим к указателю на абстрактный класс. И что такое подкласс, наследник?
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 11.04.2014, 13:30   #4
Студ
Пользователь
 
Регистрация: 20.03.2014
Сообщений: 35
По умолчанию

Да, класс В является публичным наследником А.
То что все нормально я понял так как программа запустилась, а вот почему - не понял...
РАзве не должно быть явного приведения типа? Думал так можно делать только для стандартных типов, например (char *) и т.д....
И что так возможно для любых классов?
Студ вне форума Ответить с цитированием
Старый 11.04.2014, 13:33   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Студ Посмотреть сообщение
Да, класс В является публичным наследником А.
То что все нормально я понял так как программа запустилась, а вот почему - не понял...
РАзве не должно быть явного приведения типа? Думал так можно делать только для стандартных типов, например (char *) и т.д....
И что так возможно для любых классов?
можно что угодно привести во что угодно, правда не всегда оно будет работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.04.2014, 13:38   #6
Студ
Пользователь
 
Регистрация: 20.03.2014
Сообщений: 35
По умолчанию

Интересно... А есть какие-то примеры, когда 100: не будет работать или наоборот в каких-то случаях будет обязательно работать?
Студ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять приведение типа в Turbo Pascal ~Sл@\/яH~ Паскаль, Turbo Pascal, PascalABC.NET 18 10.11.2013 22:34
как сделать из числа типа real число типа integer? gylayko Помощь студентам 6 15.09.2012 11:41
динамическое приведение типа the_deer_one C# (си шарп) 9 25.08.2012 20:59
Каким образом сохранить цвет. Типа в переменную типа TColor ? serres C++ Builder 5 07.12.2010 16:19
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35