63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Как можно получить динамический тип объекта?

04.09.2020, 18:24. Показов 2593. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
struct A{};
struct B : public A{};
struct C : public A{};
 
void test(A * p){
 
}
как в функции test получить динамический тип p при условии что структур которые унаследованы от A может быть бесконечное количество?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.09.2020, 18:24
Ответы с готовыми решениями:

Можно ли объявить переменную не как тип, а как свойство какого-либо объекта
Сегодня впервые сел за c# (по работе нужно) решил состряпать простенький калькулятор, в событии radioButton1_CheckedChanged пишу код ...

Как можно изменить тип объекта на базовый и наоборот с помощью метода
как можно изменить тип объекта на базовый и наоборот с помощью метода ? dynamic_cast

Как в обработчике события получить из sender имя объекта, вызвавшего событие, а не тип?
Добрый день! Помогите, пожалуйста, решить такой вопрос: Есть 2 объекта класса: private Sphere sphA, sphB в классе создается событие...

25
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.09.2020, 22:48
Студворк — интернет-сервис помощи студентам
ReYalp, динамическое связывание это способ использования наследования (один из случаев). Наследование само по себе - шире. Это способ включения подобъекта в объект наследника, "цементированный" на уровне типа. Раз создав такую зависимость разорвать уже нельзя. Но иногда удобно именно это. Спросить зачем оно надо легко. Ответить ещё легче: - потому что. А дальше куча вариантов. Написать двоеточие - не весь класс переписывать. Изменять и улучшать тоже нужно в одном сэмпле кода. И т.п.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
04.09.2020, 22:53
Del
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
04.09.2020, 23:02  [ТС]
IGPIGP, зачем динамическое связывание в случае когда клас не полиморфный? Когда в базовых класах нету виртуальных функций? Тот пример котоырй привел TheCalligrapher , как мне кажется, используется редко
0
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
04.09.2020, 23:44
Цитата Сообщение от ReYalp Посмотреть сообщение
зачем динамическое связывание в случае когда клас не полиморфный?
Что такое динамическое связывание?
Цитата Сообщение от ReYalp Посмотреть сообщение
Тот пример котоырй привел TheCalligrapher , как мне кажется, используется редко
А где в том примере динамическое связывание? Там вроде "статическое связывание". Если a не ссылается на подобъект базового класса A класса B(ну или как это правильно сказать), то получим UB, никаких рантайм проверок и "связывания" не будет.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.09.2020, 23:48
Цитата Сообщение от ReYalp Посмотреть сообщение
IGPIGP, зачем динамическое связывание в случае когда клас не полиморфный? Когда в базовых класах нету виртуальных функций?
ReYalp, я уже сказал. Вы используете частный случай для постановки вопроса о общем. Зачем нужны млекопитающие если нет бобров?
Перечитайте. Вам хорошо показали, что динамическое связывание можно реализовать на указателях без всякого наследования. Наследование с виртуальными методами один из возможных путей реализации такого связывания. В таком случае говорят о полиморфном поведении указателей и ссылок базового класса в зависимости от их инициализации (фактического типа целевых объектов).
Наследование, это шире. Есть много случаев когда оно вообще ни как не связано с динамическим связыванием и работает на благо людей (и пр. мыслящих существ) во вселенной.
ReYalp, то что вы задаёте вопросы, это хорошо. Но качество не в ущерб количеству. Почитайте о наследовании с тем чтобы не вырывать из текста фрагмент типа "динамическое связывание" и пытаться генерировать вопрос. Такой способ обучения - видимость обучения. Читайте, разбирайте примеры - экспериментируйте. Тогда и вопросы будут более конкретны и без логических ошибок.
1
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
05.09.2020, 14:32
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
статический тип *p - void
Только вот в C++ не разрешается *p, когда тип p — void*.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2020, 14:32

Как можно получить из объекта Process производительность процесса для ЦП
Как можно получить из объекта Process производительность процесса для ЦП? Или: как имея PID получить производительность процесса? Если...

Можно ли получить копию объекта по ссылке?
Добрый день. Столкнулся со следующей проблемой: В интерфейсе функции есть такое объявление метода class Logger : public ILogger ...

Можно ли получить текущий класс объекта в статическом методе родительского класса?
Здравствуйте, можно ли получить текущий класс объекта в статическом методе родительского класса?

Можно ли стандартными средствами VBA получить из объекта range его часть
Коллеги, Можно ли стандартными средствами VBA получить из объекта range его часть? Например объект range - это матрица размером 10x10,...

Как определить тип объекта?
Как определить тип объекта arr3? alert(arr3.type)-не работает <html> <script> var n1=parseInt(prompt('Введите количество...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru