函数指针指向类的静态成员函数

来源:互联网 发布:正方形的风管知乎 编辑:程序博客网 时间:2024/06/08 20:03

转载:http://www.cnblogs.com/dongyanxia1000/p/4906592.html

1. 代码

复制代码
 1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 class Point 5 { 6     public: 7     Point(int x=0,int y=0):x(x),y(y) 8     {  9        count++;10     }11     Point(const Point &p):x(p.x),y(p.y)12     { 13        count++;14     }15     ~Point(){ count--;}16     int getx() const {return x;}17     int gety() const {return y;}18     static void showcount()19     { 20         cout<<"object count="<<count<<endl;21     }22     private:23     int x,y;24     static int count;25 };26 int Point::count=0;  //静态数据成员定义和初始化,使用类名限定27 int main()28 { 29     void (* funcptr)()=Point::showcount;  //定义一个函数指针,指向类的静态成员函数30     Point a(4,5);31     cout<<"Point A:"<<a.getx()<<","<<a.gety()<<endl;32     funcptr();33     Point b(a);    //用类的一个对象做另一个对象的参数,调用复制构造函数34     cout<<"Point B:"<<b.getx()<<","<<b.gety()<<endl;35     funcptr();36     system("pause");37     return 0;38 }
复制代码

2. 运行结果:

调用一次构造函数,count++,调用一次复制构造函数(拷贝构造函数),count++.

Note: count定义的是static类型的,值初始化一次,并保存后面改变后的值。

         showcount()函数也是static类型的

static全局变量与普通的全局变量的区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量的区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数的区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。


原创粉丝点击