int main() { NormalState ns; FastState fs; Hero hero; hero.setState(&ns); // 초기 상태 hero.run(); hero.attack(); //------------------ 아이템 획득 (이전의 상태는 공유된다.) hero.setState(&fs); hero.run(); hero.attack(); }
int main() { Hero normal; FastItemHero fast; Hero* hero = &normal; // 초기 상태 hero->run(); hero->attack(); // 아이템 획득 hero = &fast; hero->run(); hero->attack(); }
int main() { Hero normal; FastItemHero fast; Hero* hero = &normal; // 초기 상태 hero->run(); hero->attack(); hero->gold += 10; cout << "gold: " << hero->gold << endl; // gold: 10 // 아이템 획득 // 동작 뿐 아니라 상태도 변경된다. gold는 공유되어야 한다. // fast의 gold가 덮어써진다. hero = &fast; hero->run(); hero->attack(); cout << "gold: " << hero->gold << endl; // gold: 0 }