温馨提示×

如何通过C++成员函数指针访问私有成员

c++
小樊
81
2024-06-20 00:50:04
栏目: 编程语言

在 C++ 中,可以通过使用成员函数指针和类的友元来访问私有成员。以下是一个简单的示例代码:

#include <iostream>

class MyClass {
private:
    int privateMember;
public:
    MyClass(int value) : privateMember(value) {}

    int getPrivateMember() {
        return privateMember;
    }

    // 声明为友元函数
    friend int getPrivateMemberUsingPointer(MyClass* obj);
};

// 友元函数定义
int getPrivateMemberUsingPointer(MyClass* obj) {
    return obj->privateMember;
}

int main() {
    MyClass obj(42);

    // 使用成员函数指针访问私有成员
    int (MyClass::*ptr)() = &MyClass::getPrivateMember;
    std::cout << "Private member value: " << (obj.*ptr)() << std::endl;

    // 使用友元函数访问私有成员
    std::cout << "Private member value using friend function: " << getPrivateMemberUsingPointer(&obj) << std::endl;

    return 0;
}

在上面的示例中,我们声明了一个友元函数 getPrivateMemberUsingPointer 来访问私有成员 privateMember。同时,我们还定义了一个成员函数指针 ptr,用于访问私有成员。通过这两种方式,我们可以成功访问并输出私有成员的值。

0