【C++】类成员指针
成员函数指针
在 C++ 中,类成员指针(pointer-to-member)是指向类的成员(可以是数据成员或成员函数)的指针。它和普通指针不一样,必须通过对象或者对象指针来访问。
数据成员指针声明方式:
类型 类名::*指针名;
示例
#include <iostream>
struct MyClass {
int x;
};
int main() {
int MyClass::*ptr = &MyClass::x; // 定义一个指向 MyClass 中 int 类型成员的指针
MyClass obj;
obj.x = 10;
std::cout << obj.*ptr << std::endl; // 输出 10
MyClass* pObj = &obj;
std::cout << pObj->*ptr << std::endl; // 输出 10
return 0;
}
成员函数指针声明方式:
返回类型 (类名::*指针名)(参数列表);
示例:
#include <iostream>
class Calculator {
public:
int add(int a, int b) { return a + b; }
};
int main() {
int (Calculator::*addPtr)(int, int) = &Calculator::add;
Calculator c;
int result = (c.*addPtr)(10, 20); // result = 30
std::cout << result << std::endl;
}
示例
#include <iostream>
struct MyClass {
void show(int a) {
std::cout << "a = " << a << std::endl;
}
};
int main() {
void (MyClass::*fptr)(int) = &MyClass::show;
MyClass obj;
(obj.*fptr)(42); // 调用成员函数
MyClass* pObj = &obj;
(pObj->*fptr)(100); // 也可以通过对象指针调用
return 0;
}

浙公网安备 33010602011771号