Класс B переопределяет чисто виртуальную функцию "print()" класса A. Класс C наследует класс B, а также имеет оператор "using A :: print". Теперь, почему класс C не является абстрактным классом?
class A {
public :
virtual void print() =0;
};
class B:public A {
public:
void print();
};
void B :: print() {
cout << "\nClass B print ()";
}
class C : public B {
public:
using A::print;
};
void funca (A *a) {
// a->print(1);
}
void funcb (B *b) {
b->print();
}
void funcc (C *c) {
c->print();
}
int main() {
B b;
C c;
funca(&c);
funcb(&c);
funcc(&c);
return 0;
}
Выход:
Class B print ()
Class B print ()