Надеюсь, это не дубликат, и извините за мой не идеальный английский.
Я пытаюсь понять, как именно работает шаблон декоратора в c ++.
Я использую эта реализация найдена в сети, и дизайн мне понятен.
Что я не могу понять, так это то, как технически это работает.
Когда я создаю новый объекти украшая его, например:
AbstractNPC *goblin1= new Elite(new Shaman(new NPC("Goblin")));
Тип goblin1 будет Elite, Shaman, NPC или как?
И как функция render () "берет" реализацию реализациидругие классы и использовать их вместе?
Я ожидаю, что когда я вызываю render (), я рекурсивно вызываю функции из других классов декораторов, используя эту инструкцию:
NPCDecorator::render();
Тем не менееэто не имеет смысла для меня.
Как и почему это работает?