Я отправил код как:
Абстрактный класс:
virtual void someFunction(std::vector<someObject*> & iObject) = 0;
virtual void someFunction(std::vector<someObject*> & iObject, bool aSwitch) = 0;
Первая функция существовала, я добавил вторую, чтобы избежать использования параметра значения по умолчанию в чистом методе.
Заголовок в производном классе:
virtual void someFunction(std::vector<someObject*> & iObject);
virtual void someFunction(std::vector<someObject*> & iObject, bool aSwitch = false);
Использование как ожидалось:
someFunction(std::vector<someObject*> & Object);
или
someFunction(std::vector<someObject*> & Object, true);
someFunction, как это было - уже существовало, я добавил переключатель.
Это хорошо работает, но я в замешательстве.
У меня есть рецензент кода, который говорит, что я должен включить значение по умолчанию в чисто виртуальную функцию, чтобы избежать подписей двух функций. Я помню, что читал, что значения по умолчанию в чистых виртуальных системах не очень хорошая идея, но я не могу утверждать правильную точку зрения, и статьи не могут понять, почему.
Вызывает ли это двусмысленность, если я добавлю значение по умолчанию, и если да, понадобится ли мне значение по умолчанию в производном виртуальном методе?
Могу ли я просто добавить значение по умолчанию в чисто виртуальной функции и покончить с первой функцией в заголовке производного класса? Какова лучшая практика здесь?