函数指针

C++中的函数指针是一个指向函数的指针变量,它可以用来调用函数,也可以作为函数的参数传递给其他函数。函数指针的语法格式为:

return_type (*pointer_name)(arg1_type, arg2_type, ...);

其中,return_type是函数的返回类型,pointer_name是函数指针的名称,arg1_type、arg2_type等是函数的参数类型。

以下是一个简单的例子,演示如何使用函数指针来调用一个函数:

#include <iostream>
using namespace std;

int add(int a, int b)
{
    return a + b;
}

int main()
{
    int (*func_ptr)(int, int);  // 定义一个函数指针
    func_ptr = add;             // 将函数指针指向函数add
    int sum = func_ptr(2, 3);   // 使用函数指针调用函数add
    cout << sum << endl;
    return 0;
}

在上面的例子中,我们定义了一个名为func_ptr的函数指针变量,它可以指向一个具有两个int类型参数和一个int类型返回值的函数。然后,我们将func_ptr指向了函数add,并使用函数指针调用了add函数。

另外,函数指针还可以作为函数的参数传递给其他函数,如下所示:

#include <iostream>
using namespace std;

int add(int a, int b)
{
    return a + b;
}

void print_sum(int (*func_ptr)(int, int), int a, int b)
{
    int sum = func_ptr(a, b);   // 使用函数指针调用函数add
    cout << "The sum is: " << sum << endl;
}

int main()
{
    print_sum(add, 2, 3);   // 将函数add和参数2、3传递给函数print_sum
    return 0;
}

在上面的例子中,我们定义了一个函数print_sum,它接受一个函数指针作为参数,以及两个int类型的参数。在print_sum函数中,我们使用函数指针调用了add函数,并输出了计算结果。在main函数中,我们将函数add和参数2、3传递给了print_sum函数。

函数指针指向类内成员函数:

#include <iostream>

class Student {
public:
    Student(const std::string& name_, unsigned age_);
    ~Student() {}
    void output() {
        std::cout << this->name << " " << this->age << std::endl;
    }
private:
    std::string name;
    unsigned age;
};

Student::Student(const std::string& name_ = "", unsigned age_ = 0) : name(name_), age(age_) {}

int main() {
    const Student A("A君", 10);
    void (Student:: * pf)() = &Student::output;
    (A.*pf)();


    return 0;
}
posted @ 2023-05-08 16:49  hacker_dvd  阅读(37)  评论(0)    收藏  举报