这是函数指针还是指针函数
时间: 2024-07-29 15:00:32 浏览: 62
函数指针和指针函数是 C++ 中两种不同的概念。
1. **函数指针**(Function Pointer):它是一个变量,可以存储一个函数的地址。这意味着你可以将指向某个特定函数的指针赋值给另一个函数指针,这样就可以通过这个函数指针来调用不同的函数。例如:
```cpp
int (*funcPtr)(int); // 声明一个函数指针,接受一个int参数并返回int
funcPtr = &add; // 将add函数的地址赋给它
funcPtr(2); // 通过指针调用add函数
```
这里的 `&add` 表示add函数的地址。
2. **指针函数**(Pointer-to-member Function):这是C++的一个特性,它允许你传递一个成员函数的指针,通常是作为类的成员函数指针。这种指针可以在运行时决定哪个类的实例上的哪个成员函数被调用。使用 `->` 运算符访问:
```cpp
class MyClass {
public:
void memberFunc(int x) { ... }
};
MyClass* obj;
void (MyClass::*ptrMemFunc)(int); // 定义一个指针函数
ptrMemFunc = &MyClass::memberFunc; // 设置为类的成员函数
(obj->*ptrMemFunc)(2); // 通过指针调用成员函数
```
这里 `obj->*ptrMemFunc` 实际上是 `(*obj).memberFunc(2)` 的简写。
阅读全文