![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
FTK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 11.6.2005 Репутация: нет Всего: нет |
Привет Всем!!! Сейчас еще учусь, помогите кто-нибудь ответить на такой вопрос: Как вызвать метод базового класса из объекта производного класса, если в производном классе этот метод был замещен? Если можно, то желательно с иллюстрацией =) ![]() |
|||
|
||||
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: нет Всего: 53 |
кажется так:
|
|||
|
||||
srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
jorkug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 21.3.2005 Репутация: нет Всего: 1 |
|
|||
|
||||
srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
jorkug
Это будет работать неправильно, если метод виртуальный. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
jorkug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 21.3.2005 Репутация: нет Всего: 1 |
srd
Да, но в противном случае это гораздо удобней |
|||
|
||||
FTK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 11.6.2005 Репутация: нет Всего: нет |
Большое спасибо, помогли =))
|
|||
|
||||
Earnest |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Может, еще не поздно... Чтобы в этом примере все работало правильно и с виртуальными функциями, надо писать так:
-------------------- ... |
||||||
|
|||||||
comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Скорее всего, нет (но это не точно. Сейчас компилятор не под рукой :-( )Если ты хочешь обращаться к методу родительского класса по-другому, чем к методу ребенка, то зачем тебе делать метод виртуальным???
Хотя, бывает, надо. Сделай два метода - виртуальный и обычный и используй. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Если в производном классе определен метод с тем же именем, что и в базовом, но с другой сигнатурой, что часто бывает удобно, то метод базового класса для компилятора невидим.
Способов борьбы 2: 1) как было написано ранее, base_class::method() 2) в определении производного класса написать using base_class::metod, Второй способ открывает все методы базового класса с таким именем; кроме того, он же позволяет изменять доступ к методам. Скажем, в базовом классе метод объявлен как protected. Если в производном поместить using в раздел public, то метод станет виден всем (при доступе через производный класс, конечно), а если, наоборот, в private - то свои потомки до него уже не доберутся. Кроме того, использование using позволяет открывать методы базового класса при private и protected наследовании. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |