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

Классы - C++

Восстановить пароль Регистрация
 
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
17.08.2011, 23:20     Классы #1
Здравствуйте, а не подскажите может ли указатель базового класса указывать на наледника
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2011, 23:20     Классы
Посмотрите здесь:

C++ классы
классы C++
Классы C++
Классы C++
C++ классы с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.08.2011, 23:27     Классы #2
Разумеется, именно на этой идее в плюсах реализовано позднее связывание.
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
17.08.2011, 23:33  [ТС]     Классы #3
Блин, наоборот хотел спросить - может ли указатель наследника указывать на базовый, по смыслу должен, но компилятор говорит, что нет, еще раз извините за невнимательность
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
17.08.2011, 23:45     Классы #4
Цитата Сообщение от hepr Посмотреть сообщение
по смыслу должен
По какому-такому смыслу ?
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
17.08.2011, 23:57  [ТС]     Классы #5
Что наследник - это базовый + что-то еще, тогда почему указатель на базовый не может указывать на все элементы базового класса в наследнике и не брать во внимание приобретенные
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.08.2011, 07:24     Классы #6
Цитата Сообщение от hepr Посмотреть сообщение
указатель на базовый не может указывать на все элементы базового класса в наследнике и не брать во внимание приобретенные

Ещё раз, внятно и по-русски напишите то, что вы хотите. От сообщения к сообщению ваши намерения меняются туда-сюда.

Добавлено через 1 минуту
Указатель на базовый класс может указывать на любого его наследника. Указатель на наследника указывать на базовый не может.
LosAngeles
Заблокирован
18.08.2011, 07:57     Классы #7
Цитата Сообщение от hepr Посмотреть сообщение
Что наследник - это базовый + что-то еще, тогда почему указатель на базовый не может указывать на все элементы базового класса в наследнике и не брать во внимание приобретенные
ты хочешь чтобы с помощью указателя на базовый класс, содержащий на самом деле указатель на потомка, вызывать методы исключительно базового класса? Тогда можно подавить виртуальные вызовы вместо func писать Base::func например. Хотя в таком случае статический полиморфизм более уместен, который собственно и используется по умолчанию
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
18.08.2011, 10:44  [ТС]     Классы #8
LosAngeles, silent_1991, спасибо, вы ответили на мой вопрос
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2011, 12:53     Классы
Еще ссылки по теме:

Классы в С++ C++
C++ Классы
C++ Классы

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

Или воспользуйтесь поиском по форуму:
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
19.08.2011, 12:53     Классы #9
Указатель не может быть на класс (в смысле тип). Указатель может быть только на объект (в смысле экземпляр).

Точнее: указатель типа базового класса может указывать на экземпляр потомка, обратное не должно быть реализовано.

Если обращаться к экземпляру-потомку через указатель на базовый класс, то все методы и поля реализованные в базовом классе, будут доступны (разрешены) и в экземпляре потомка. А вот при обратном обращении, это будет нарушено, т.к. наверняка у потомка есть поля не определенные в родительском классе.
Yandex
Объявления
19.08.2011, 12:53     Классы
Ответ Создать тему
Опции темы

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