cpp доступ к методам объекта подкласса из функции, которая требует объекта суперкласса

Документация SQLite для модуля R-tree говорит:

R-Tree - это специальный индекс, который предназначен для выполнения запросов диапазона.

BLOCKQUOTE>

0
задан Teererai Marange 16 January 2019 в 01:08
поделиться

1 ответ

То, что вы просите, называется «полиморфным поведением» (или «динамической диспетчеризацией»), и это базовая особенность C ++. Чтобы включить его, вам нужно сделать пару вещей:

  1. Пометить ваши методы sayhello() ключевым словом virtual (т. Е. virtual void sayhello(), а не просто void sayhello()). )

  2. Измените аргумент метода greet() на передачу по ссылке или передачу по указателю, чтобы избежать проблем с разделением объектов (т. Е. int greet(const Mother & m), а не int greet(Mother m))

Как только вы это сделаете, компилятор будет разумно выбирать, какой метод sayhello() вызывать во время выполнения, на основе фактического типа объекта аргумента m, а не жесткое кодирование выбора во время компиляции на основе типа, явно указанного в списке аргументов функции greet.

0
ответ дан Jeremy Friesner 16 January 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: