Conforme hierarquia de classes da figura acima, foi definido um método void f() nas quatro classes — A, B, C e D —, de tal maneira que a função f( ) de cada classe chame somente uma vez a função f( ) de cada um de seus antecessores na ordem hierárquica mostrada, de baixo para cima. O código que implementa essas classes está descrito a seguir.
class A {
protected:
void f_( ) {...}
public:
virtual void f() {f_();}
};
class B: public A {
protected:
void f_( ) {…}
public:
virtual void f() {A::f_(); f_();}
};
class C:public A {
protected:
void f_( ) {…}
public:
virtual void f( ) {A::f_( ); f_( );}
};
class D: public B, public C {
protected:
void f_( ) {…}
public:
void f( ) {B::f_( ); C::f_( ); f_( );}
};
Considerando as informações do texto ao lado, julgue o item seguinte.
A função “f( )” na classe D atende à especificação “que a função f( ) de cada classe chame somente uma vez a função f( ) de cada um de seus antecessores na ordem hierárquica mostrada” e está sintaticamente correta.