Нет, вы не можете указать сложные ограничения, для которых наборы функций-членов должны быть переопределены.Единственные ограничения применяются к отдельным функциям;чисто виртуальный (=0
) для обязательного переопределения и (в C ++ 11) final
для предотвращения переопределения.
Лучшее, что вы можете сделать, это сделать обе функции чисто виртуальными, заставляя производный класс переопределятьи то и другое.Это по крайней мере заставляет автора производного класса задуматься о том, что нужно переопределить;невозможно переопределить одну и забыть другую.
Вы все еще можете предоставить реализацию по умолчанию, так что производные классы, которые не хотят переопределять какую-либо функцию, нуждаются только в очень коротких переопределениях, которые вызывают версии по умолчанию.