C++——函数指针
在C++中,函数指针是指向函数的指针变量。它允许将函数作为参数传递给其他函数、动态选择调用的函数以及在运行时改变函数的行为。
函数指针的声明和使用如下所示:
1.声明函数指针类型:
returnType (*pointerName)(parameterTypes)
其中,returnType
是函数返回类型,pointerName
是函数指针变量的名称,parameterTypes
是函数的参数类型。
2.初始化函数指针
pointerName = &functionName;
将函数名赋值给函数指针变量,可以使用取址运算符 &
获取函数的地址。
3.使用函数指针
(*pointerName)(arguments);
使用括号将函数指针变量括起来,再加上参数列表来调用函数。
以下是一个简单的示例,演示函数指针的使用:
#include <iostream>
// 声明函数指针类型
typedef void (*PrintFunction)(const std::string&);
// 函数1
void printToConsole(const std::string& message) {
std::cout << "Console: " << message << std::endl;
}
// 函数2
void printToError(const std::string& message) {
std::cerr << "Error: " << message << std::endl;
}
int main() {
// 声明函数指针变量
PrintFunction printFunc;
// 初始化函数指针
printFunc = &printToConsole;
// 使用函数指针调用函数1
(*printFunc)("Hello, World!");
// 改变函数指针的指向
printFunc = &printToError;
// 使用函数指针调用函数2
(*printFunc)("Something went wrong!");
return 0;
}
在上面的示例中,我们声明了一个函数指针类型 PrintFunction
,它接受一个 const std::string&
类型的参数并返回 void
。然后定义了两个函数 printToConsole
和 printToError
,它们与函数指针类型匹配。在 main
函数中,我们先将函数指针 printFunc
初始化为指向 printToConsole
函数,然后通过函数指针调用函数1。接着,我们改变函数指针的指向,使其指向 printToError
函数,并通过函数指针调用函数2。