Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

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

04.09.2020, 18:24. Показов 2582. Ответов 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
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,351
04.09.2020, 22:53
Del
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
04.09.2020, 23:02  [ТС]
IGPIGP, зачем динамическое связывание в случае когда клас не полиморфный? Когда в базовых класах нету виртуальных функций? Тот пример котоырй привел TheCalligrapher , как мне кажется, используется редко
0
 Аватар для zayats80888
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
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, когда тип pvoid*.
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
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru