Virtual function and polymorphism

I am creating a base class in my testbench.
The base class contains a bunch of functions to utility function processing.
For of the function I know for sure have to be overridden in the derived classes.
I have made these functions as virtual.

For some functions, I am not sure if user will need to override them in the derived class but I would like to keep an option for designers of derived class to override if required just as an option to extend. So, I am thinking of declaring such functions also as virtual.

The question is, whether there is any downside of declaring a function virtual except that such function will be subject to late binding?

In reply to verif_learner:

The downside is once virtual, always virtual—you cannot change it back.

In Java, all public methods are virtual by default, all protected and local methods are non-virtual by default. I suggest using that strategy.

In reply to dave_59:

In reply to verif_learner:
The downside is once virtual, always virtual—you cannot change it back.
In Java, all public methods are virtual by default, all protected and local methods are non-virtual by default. I suggest using that strategy.

Thanks a lot.