函数指针
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;
}

浙公网安备 33010602011771号