O processo de construção de uma classe ocorre da classe base para as classes derivadas, como subindo uma escada. Em cada passo, é chamado o construtor de cada classe.
Isso ocorre para garantir que se uma classe derivada fizer uso de um dado/função de uma classe base, ela tenha disponível.
Aonde voce viu que precisa chamar explicitamente o construtor da classe base??? o que voce pode fazer é inicializar os dados da classe base, chamando explicitamente o construtor da classe base na classe derivada, mas isso ocorre na lista de inicialização.
C( void ) : B( "Tomate", 50.00 ), estado( 10 )
{
...
}
Isso não é chamar explicitamente, e sim informar quais os parametros que o construtor deve usar na inicialização.
Abraços,
cox
cox