Преминаване към метода не на наследника, а на родителя


IMHO, или не е описано, или неразбрано.
или базовият клас трябва да има необходимия интерфейс, или трябва да преобразувате базата към типа на наследника.

Да, писах по памет. Сега не мога да намеря тази информация. Нещо като:
Въпрос: в тази версия допълнителните свойства / методи на наследниците на Куче, Котка. N не са налични, тъй като се предават като домашни любимци? И ако не са налични, как да ги направим така, че да са налични и в същото време да запазим такъв тип аргумент, че да не прилагаме метод за всеки наследник?

"обикновен" полиморфизъм двойно изпращане (известен още като модел на посетител) dynamic_cast


двойно изпращане (известен още като модел на посетител)
динамично_предаване
Не разбрах за обикновения полиморфизъм, как е възможно това, може би имате предвид виртуализация? за останалите - гугъл.
Разбира се, логиката е същата, така че е безсмислено да създавам метод, но не знам как да го направя правилно.

след това и към Google (или директно към книгата) - динамичен полиморфизъм

Говорих и за виртуални функции.
Не мога да дам пример, т.к няма конкретна задача. Интересуваше ме това: ако подадем аргумент с тип Descendant of This Parent на функция с параметър от тип Parent, то във функцията ще имаме достъп до свойствата и методите на детето или само до тези, които са наследени от Parent?

Само за наследените, въпреки че можете да направите изрично кастиране, но тогава смисълът на препращането към базовия клас се губи напълно.

Е, ето някои общи примери, които може да ви помогнат да разберете:
(е, трябваше да използвам търсачката вместо теб.)

пс Под клетка имам предвид 1 байт.

добре, не отне много време за търсене .. знаех какво търся .. забележката имаше за цел да обърне внимание на факта, че много теми бяха повдигнати и разгледани повече от веднъж и дори с примери. :)

Е, вземете поне увеличаването на указателя .. Той променя стойността си не с един байт, а с размера на обекта тип.
P.S. Не забравяйте правилото на форума: един въпрос, една тема.


Типът е вид езикова абстракция, която ви позволява да дефинирате поведението на обектите и взаимодействието между тях. C++ е статично въведен, т.е. цялата информация за типа съществува само в режим на компилация.
Типовете са вградени (int, double. ) и дефинирани от потребителя (struct, class, union).
Типът на променливата е свързан с нея през цялата й видимост. тези. програмистът пише int i; и в бъдеще, където и да се използва това i, компилаторът знае, че е int.
Благодарение на писането е възможно претоварване на функциите. Тези. когато извиква която и да е функция с аргументи, компилаторът търси най-подходящата сред всички функции с едно и също име. Ползите от претоварването са очевидни: В C++ претоварването съществува не само за функциите, но и за операторите. тези. в израза a+b; ще бъде избрано например op+ () или op+ ()
Едно претоварване обаче не е достатъчно за удобна работа, тъй като ще трябва да дефинираме куп едни и същи функции за всички типове, от които се нуждаем. За да разреши този проблем, C++ въведе преобразуване на типове. (Той може да бъде изричен и неявен и също така е разделен на нива на промоция, стандартни и персонализирани преобразувания). Сега за израза char_+int_ не е необходимо да прилагате отделен плюс, но можете да го конвертирате във формата int_ + int_. Същото важи и за персонализираните типове, за коитопрограмистът може да дефинира желаните трансформации.
Освен това, благодарение на познаването на типа, размерът на обекта също е известен и не е необходимо да го следим ръчно.
Е, всичко изглежда .. Надявам се обяснението да не се различава много от истината