La respuesta a la pregunta es sí.Que yo sepa un método virtual, es con el fin de cumplir el papel de interface.
Lo que deba hacer el método virtual de una clase debe implementarse en ella misma y este no se hereda a las clases derivadas de la clase en cuestión.
Ahora: Así es que yo paso los parámetros a la clase ancestra
class Base
{
private:
int FValor;
public:
virtual void __fastcall Base(int Valor);
void HagaAlgo(void);
}
class Base1:public Base
{
private:
int FOtroValor;
public:
void __fastcall Base1(int MiValor);
void HagaAlgo(void);
};
void __fastcall Base1(int MiValor)
:Base(MiValor)
{
ShoMessage(IntToSTr(MiValor));
}
si lo que quieres es invocar el método de la clase ancestra...
Lo llamas así
void __fastcall Base1(int MiValor)
:Base(MiValor)
{
Base::Base(MiValor); /*Aquí llama al constructor de quien se hereda*/
}
void __fastcall Base1(int MiValor)
:Base(MiValor)
{
inherited::HagaAlgo(); /*Aquí llama al método de quien se hereda, en este caso el de Base*/
}
Bueno no sé si esa es tu inquietud...