
++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
class Base { public: void () { printf("Enter Base::func()n"); } virtual void virtual_func() { printf("Enter Base::virtual_func()n"); } }; class Derived : public Base { public: void () { printf("Enter Derived::func()n"); } virtual void virtual_func() { printf("Enter Derived::virtual_func()n"); } }; typedef void (Base::*p_base_func)(); int main(int argc, char* argv[]) { Derived d; Base b; Base *pb = &d; p_base_func pbf = &Base::func; printf("-- Call via pointer to normal function of basen"); (pb->*pbf)(); (d.*pbf)(); cout << endl; cout << endl << endl; pbf = &Base::virtual_func; printf("-- Call via pointer to virtual function of basen"); (pb->*pbf)(); (d.*pbf)(); system("pause"); return 0; }
|
注释部分会发生编译器内部错误。我也不知道为什么?
看代码,为成员函数添加一个引用(支持虚函数)。
然后利用对象调用函数。
貌似,只能利用对象才能成功。
近期评论