Нет проблем. Ты можешь это сделать. Единственное предостережение в том, что оно не будет рассматриваться как переопределение виртуальной функции базового класса.
class A
{
public:
virtual void doSomethingCool() = 0;
};
class B : public A
{
public:
void doSomethingCool();
};
class C: Public A
{
public:
void doSomethingCool(int param);
};
int main(){}
Так что, хотя это технически возможно, вы, возможно, захотите взглянуть на дизайн вашего интерфейса класса A.
Одним из вариантов может быть предоставление аргумента по умолчанию для A :: doSomethingCool
virtual void doSomethingCool(int = 0) = 0;