当前位置: 首页 > news >正文

C++类_成员函数指针

      在 C++11 里,成员函数指针是一种特殊的指针,它指向类的成员函数。下面详细介绍成员函数指针的定义、使用及注意事项。

定义

成员函数指针的定义格式如下:

返回类型 (类名::*指针名)(参数列表);

例如:

class MyClass {
public:void func(int param) {// 函数实现}
};// 定义成员函数指针
void (MyClass::*ptr)(int) = &MyClass::func;

使用

要使用成员函数指针,需借助对象或者对象指针来调用。下面给出两种调用方式的示例:

#include <iostream>class MyClass {
public:void func(int param) {std::cout << "Function called with parameter: " << param << std::endl;}
};int main() {// 定义成员函数指针void (MyClass::*ptr)(int) = &MyClass::func;// 使用对象调用MyClass obj;(obj.*ptr)(10);// 使用对象指针调用MyClass* objPtr = &obj;(objPtr->*ptr)(20);return 0;
}

在上述代码中,先是定义了一个指向 MyClass 类中 func 函数的成员函数指针 ptr,接着分别利用对象 obj 和对象指针 objPtr 来调用该成员函数。

注意事项

  1. 取地址:定义成员函数指针时,必须使用 & 运算符来获取成员函数的地址。
  2. 调用方式:使用对象调用成员函数指针时要用 .* 运算符,而使用对象指针调用时则要用 ->* 运算符。
  3. 类型匹配:成员函数指针的返回类型和参数列表必须与所指向的成员函数严格匹配。
  4. 静态成员函数:静态成员函数不属于任何对象,所以不能用成员函数指针指向静态成员函数,不过可以用普通函数指针指向静态成员函数。
#include <iostream>class MyClass {
public:static void staticFunc() {std::cout << "Static function called." << std::endl;}
};int main() {// 普通函数指针指向静态成员函数void (*staticPtr)() = &MyClass::staticFunc;staticPtr();return 0;
}

在这个例子中,使用普通函数指针 staticPtr 指向 MyClass 类的静态成员函数 staticFunc

相关文章:

  • vae笔记
  • 修复笔记:SkyReels-V2项目中的 from_config 警告
  • 学习黑客Linux权限
  • bc 命令
  • 31.软件时序控制方式抗干扰
  • 四年级数学知识边界总结思考-上册
  • FPGA----基于ZYNQ 7020实现EPICS通信系统
  • CATIA高效工作指南——曲面设计篇(一)
  • [GESP202503 四级] 二阶矩阵c++
  • [python]非零基础上手之文件操作
  • 【人工智能学习笔记 二】 MCP 和 Function Calling的区别与联系
  • 动态规划(5)路径问题--剑指offer -珠宝的最大值
  • 【AI论文】Phi-4-reasoning技术报告
  • nginx 核心功能 02
  • 软件架构方之旅(5):SAAM 在软件技术架构评估中的应用与发展研究
  • 基于python生成taskc语言文件--时间片轮询
  • 0.0973585?探究ts_rank的score为什么这么低
  • KaiwuDB X 遨博智能 | 构建智能产线监测管理新系统
  • LLVM Pass
  • GTS-400 系列运动控制器板卡介绍(十五)---运动模式二
  • “仿佛一场追星粉丝会”,老铺黄金完成国内头部商业中心全覆盖,品牌化后下一步怎么走?
  • 经济日报:仅退款应平衡各方权益
  • 特朗普称加总理将很快访美,白宫:不影响将加拿大打造成“第51个州”计划
  • 贵州锦屏县委原书记舒健已任黔东南州政府办主任
  • 首部关于民营经济发展的基础性法律,有何亮点?专家解读
  • 美国务院宣布新一轮与伊朗相关的制裁