C++的静态成员函数指针

先简单的说说非静态的成员函数。

非静态成员函数指针的类型:

类的非静态成员是和类的对象相关的。也就是说,要通过类的对象来访问变量。

成员函数的类型定义为:

typedef void (A::*pfunc)();

A是一个类,有一个成员函数void test();

使用:

pfunc p = A::test;

示例:

[cpp] view plain copy

  1. #include <iostream>
  2. using namespace std;
  3. class A {
  4. public :
  5. void test1() { cout << "test" << endl; };
  6. public :
  7. };
  8. typedef void (A::*PFunc)();
  9. int main() {
  10. A a;
  11. PFunc f = &(A::test1);
  12. (a.*f)();
  13. system("PAUSE");
  14. return 0;
  15. }

需要注意的是因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象,来调用这个函数。

静态成员函数,可以通过类作用域符来访问。

静态成员函数的类型:静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。

typedef void (*pfunc) ();

这个和普通函数的指针是一样的。

使用的时候也可以像普通函数一样。

示例:

[cpp] view plain copy

  1. #include <iostream>
  2. using namespace std;
  3. class A {
  4. public :
  5. static void test1() { printf("test\n"); };
  6. public :
  7. };
  8. typedef void (*PFunc)();
  9. int main() {
  10. PFunc f = &(A::test1);
  11. (*f)();
  12. system("PAUSE");
  13. return 0;
  14. }

另外:静态成员的初始化不受访问控制的限制。

根据C++primer所说,要想确保对象只定义一次,最好的办法就是把静态数据成员的定义和其他非内联函数的定义放在同一个文件中。

C++静态成员函数指针相关推荐

  1. C++的静态成员函数指针

    http://blog.csdn.net/sky453589103/article/details/47276789 先简单的说说非静态的成员函数. 非静态成员函数指针的类型: 类的非静态成员是和类的 ...

  2. 类的成员函数指针和静态成员函数指针 调用成员函数***

    C++提供static这个关键词对静态成员进行声明,静态成员函数和类的实例化无关,对于同一类来说,静态成员函数是所有类的对象共享的.而普通成员函数需要实例化才能调用,对于每一个实例来说,普通成员函数是 ...

  3. c++静态成员函数好处

    静态成员函数主要为了调用方便,不需要生成对象就能调用. 比如: class X { public:void MethodA();static void MethodB(); } 此时MethodB可以 ...

  4. C++中函数指针的使用

    A function pointer is a variable that stores the address of a function that can later be called thro ...

  5. 函数指针--全局函数指针与类的函数指针(二)

    本次对之前的说明做个补充,大体内容还是一样的. 这里对类里面的成员函数指针变量的使用继续进行了解,最主要的是希望能达到通过非静态成员指针变量来引用各自的非静态成员函数. 这样每个实例可以保存当前对象对 ...

  6. c c++ 函数内数组初值_C/C++函数指针与指针函数

    关于指针,前面文章C语言指针详解有过介绍,这里主要讨论函数指针和指针函数. 1 什么是指针? 定义:指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量; 上面一个 4GB 的内存可以存放 ...

  7. 类成员函数指针的语法

    /*类成员函数指针的语法*/ /*****************************类.h文件************************************/ #if !defined ...

  8. 成员函数指针与高性能的C++委托

    成员函数指针与高性能的C++委托 http://www.cnblogs.com/jans2002/archive/2006/10/13/528160.html Member Function Poin ...

  9. 成员函数指针与高性能的C++委托(上篇)

    成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(clo ...

最新文章

  1. MOCTF-火眼金睛
  2. html一个层下面两个小层并奇,我是一个奇数是一个两位数,十位数字与个位数字的积是2,猜猜看我是几?——青夏教育精英家教网——...
  3. JavaScript玩转机器学习:保存并加载 tf.Model
  4. Python——腾讯笔试编程题(函数练习)
  5. hdu-1711(hash)
  6. 发电机机房设计规范_柴油发电机的容量怎么选择!发电机机房如何合理设计?来涨知识!...
  7. proxy_redirect参数的作用
  8. Python自动化办公实战:包含Word、Excel、Pdf和Email邮件案例
  9. 编译原理:语法分析器
  10. 线性代数基础知识点回顾与总结(一):行列式与矩阵
  11. 黑苹果主机z77技嘉wifi主板,
  12. 电脑误删的文件怎么恢复?分享90%的人都会的这2招
  13. 意识理论综述:众多竞争的意识理论如何相互关联?
  14. 致第一次安装RIME的你
  15. linux给固态4k对齐,linux查看硬盘4K对齐方法
  16. DOS下读取4GB内存——梁肇新代码分析
  17. 多元统计分析——主成成分分析
  18. ABPVnext创建项目排坑1
  19. 2021年茶艺师(初级)考试报名及茶艺师(初级)找解析
  20. truetype技术和矢量字库的技术原理及实现(转)

热门文章

  1. IDEA 错误:找不到或无法加载主类
  2. Linux学习第五篇之文件处理命令touch、cat、tac、more、less、head、tail
  3. win10+vscode部署java开发环境
  4. 常用的方法论-NPS
  5. [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2
  6. 算法与数据结构(三) 二叉树的遍历及其线索化(Swift版)
  7. 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
  8. Felix的Nodejs代码风格
  9. 第一次软工作业展示——潘学
  10. 最近项目中遇到的一个算法挑战