#includeusing namespace std; typedef int(*pMax)(int,int);//普通函数指针 int max(int a,int b) { return a>b a:b; } class A { public: int min(int a,int b) { return a } static int myMin(int a,int b) { return a } }; class B:public A { }; typedef int (A::*pMin)(int,int);//类的非静态函数指针 typedef int (*pMyMin)(int,int);//类的静态函数指针 typedef int (B::*pMinB)(int,int);//类的非静态函数指针 void main() { int a=3; int b=4; cout</* 测试普通函数指针 */ pMax p1=&max; cout<<(*p1)(a,b)< int (*p2)(int, int)=&max; cout<<(*p2)(a,b)</* 测试类的非静态函数指针 */ A TestA; pMin p3=&A::min; cout<<(TestA.*p3)(a,b)< int(A::*p4)(int,int)=&A::min; cout<<(TestA.*p4)(a,b)< /* 测试类的静态函数指针 */ pMyMin p5=&A::myMin; cout<<(*p5)(a,b)< int(*p6)(int,int)=&A::myMin; cout<<(*p6)(a,b)< /* 测试非静态函数指针在类继承中怎么使用 */ B TestB; pMinB p7=&A::min; cout<<(TestB.*p7)(a,b)< cout<<(TestB.*p3)(a,b)< cout<<(TestA.*p7)(a,b)<
从中可以看出,父类对象不可以调用以子类声明的函数指针,而子类对象可以调用以父类声明的函数指针。