Exhit
Power Member
Boas,
Eu tenho amanhã um exame e estou confortável com quase toda a matéria, mas só agora me deparei com este código, que me está a dar a volta à cabeça e não percebo porque funciona de uma maneira, mas não de outra. Queria então tirar uma dúvida.
Percebo que dê erro ao criar os objectos "X a" e "Y b", mas não percebo porque no "Z c" não dá erro.
É porque não existe derivação direta para a classe X Abstracta (sendo a única expecificamente abstracta)? Tipo Y é subclasse de X, erro. Mas como Z é subclasse de Y, já não?
Obrigado desde já.
Eu tenho amanhã um exame e estou confortável com quase toda a matéria, mas só agora me deparei com este código, que me está a dar a volta à cabeça e não percebo porque funciona de uma maneira, mas não de outra. Queria então tirar uma dúvida.
Código:
class X {
public:
virtual void f()=0;
virtual void g()=0;
};
class Y: public X {
void f();
};
class Z: public Y {
void g();
};
X a; //ERRO (percebi)
Y b; //ERRO (percebi)
Z c; //ok (porquê?)
Percebo que dê erro ao criar os objectos "X a" e "Y b", mas não percebo porque no "Z c" não dá erro.
É porque não existe derivação direta para a classe X Abstracta (sendo a única expecificamente abstracta)? Tipo Y é subclasse de X, erro. Mas como Z é subclasse de Y, já não?
Obrigado desde já.
Última edição: