轩辕娅童 发表于 2025-6-4 19:57:34

函数指针和std::function在成员函数的使用区别

成员函数,函数指针和 std::function 的区别很明显。成员函数的调用需要依赖于对象实例(即 this 指针),因此它们的处理方式与普通函数不同。以下是详细分析:
1. 成员函数指针


[*]定义:成员函数指针是指向类成员函数的指针,它的类型包括类信息。
[*]特点:

[*]语法复杂,尤其是涉及多级指针和类型转换时。
[*]调用成员函数时需要显式传递对象实例(this 指针)。
[*]只能指向特定类的成员函数,不能指向普通函数或 lambda 表达式。

[*]适用场景:适用于需要直接调用特定类成员函数的场景。
示例代码:

#include class MyClass {public:    int add(int a, int b) {      return a + b;    }};// 接受成员函数指针和对象实例作为参数的函数template void executeMemberFunc(T* obj, int (T::*func)(int, int), int a, int b) {    std::cout
页: [1]
查看完整版本: 函数指针和std::function在成员函数的使用区别