首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

类函数指针跟普通函数指针

2013-10-25 
类函数指针和普通函数指针我们都看惯了一般的函数指针,但是关于类的函数指针又是怎样的呢?它的静态函数指

类函数指针和普通函数指针

我们都看惯了一般的函数指针,但是关于类的函数指针又是怎样的呢?它的静态函数指针和非静态函数指针是一样的么?


#include<iostream>using 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<b?a:b;}static int myMin(int a,int b){return a<b?a:b;}};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<<max(a,b)<<endl;/*    测试普通函数指针    */pMax p1=&max;cout<<(*p1)(a,b)<<endl;int (*p2)(int, int)=&max;cout<<(*p2)(a,b)<<endl;/*    测试类的非静态函数指针    */A TestA;pMin p3=&A::min;cout<<(TestA.*p3)(a,b)<<endl;int(A::*p4)(int,int)=&A::min;cout<<(TestA.*p4)(a,b)<<endl;/*    测试类的静态函数指针    */pMyMin p5=&A::myMin;cout<<(*p5)(a,b)<<endl;int(*p6)(int,int)=&A::myMin;cout<<(*p6)(a,b)<<endl;/*    测试非静态函数指针在类继承中怎么使用    */B TestB;pMinB p7=&A::min;cout<<(TestB.*p7)(a,b)<<endl;cout<<(TestB.*p3)(a,b)<<endl;//cout<<(TestA.*p7)(a,b)<<endl;错误}

从中可以看出,父类对象不可以调用以子类声明的函数指针,而子类对象可以调用以父类声明的函数指针。



热点排行