Estou confuso sobre quais poderiam ser os problemas se um construtor fosse herdado de uma classe base. O Cpp Primer Plus diz:
Os construtores são diferentes de outros métodos de classe, pois criam novos objetos, enquanto outros são invocados por objetos existentes . Esse é um dos motivos pelos quais os construtores não são herdados . Herança significa que um objeto derivado pode usar um método de classe base, mas, no caso de construtores, o objeto não existe até que o construtor tenha feito seu trabalho.
Entendo que o construtor é chamado antes da construção do objeto.
Como isso pode causar problemas se uma classe filho herda ( ao herdar, a classe filho é capaz de substituir o método da classe pai, etc. Não apenas acessando o método da classe pai ) o construtor pai?
Entendo que não há necessidade de chamar explicitamente um construtor a partir de um código [não que eu saiba ainda.], Exceto ao criar objetos. Mesmo assim, você pode fazer isso usando algum mecanismo para chamar o construtor pai [No cpp, usando ::
ou usando member initialiser list
, No java usando super
]. Em Java, há uma imposição para chamá-lo na 1ª linha. Entendo que é para garantir que o objeto pai seja criado primeiro e, em seguida, a construção do objeto filho prossiga.
Pode substituí- lo. Mas, não posso apresentar situações em que isso possa representar um problema. Se a criança herdar o construtor pai, o que pode dar errado?
Então, isso é apenas para evitar herdar funções desnecessárias. Ou há algo mais?