#include <cstdio> using namespace std; class Base { public: virtual void A() { puts("Base::A called"); } }; class D : public Base { public: virtual void A() { puts("D::A called"); } }; int main() { D* d = new D; d->Base::A(); (d->Base::A)(); void (Base::*ptr) () = &Base::A; (d->*ptr)(); delete d; }
运行结果
Base::A called
D::A called
D::A called
加不加括号会决定是否表现出多态行为