C++ virtual function not called in subclass
问题 Consider this simple situation: A.h class A { public: virtual void a() = 0; }; B.h #include <iostream> class B { public: virtual void b() {std::cout << "b()." << std::endl;}; }; C.h #include "A.h" #include "B.h" class C : public B, public A { public: void a() {std::cout << "a() in C." << std::endl;}; }; int main() { B* b = new C(); ((A*) b)->a(); // Output: b(). A* a = new C(); a->a(); // Output:: a() in C. return 0; } In other words: - A is a pure virtual class. - B is a class with no super