Переопределение против Виртуального

Какова цель использования зарезервированного слова virtual перед функциями? Если я хочу, чтобы дочерний класс переопределил родительскую функцию, я просто объявляю ту же функцию, такую ​​какvoid draw(){}.

class Parent { 
public:
    void say() {
        std::cout << "1";
    }
};

class Child : public Parent {
public:
    void say()
    {
        std::cout << "2";
    }
};

int main()
{
    Child* a = new Child();
    a->say();
    return 0;
}

Выход 2.

Итак, еще раз, почему бы зарезервированное словоvirtual быть необходимым в заголовкеsay() ?

Огромное спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос