【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;
}

 

posted @ 2025-05-22 14:07  苏格拉底的落泪  阅读(14)  评论(0)    收藏  举报