MST

星途 面试题库

面试题:C++ 中如何在类外访问私有成员

请描述在C++ 中一般情况下私有成员不能在类外直接访问,那通过什么合法的方式可以在类外访问到类的私有成员?请举例说明实现过程。
23.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在C++ 中,虽然私有成员不能在类外直接访问,但可以通过以下两种合法方式在类外访问:

  1. 友元函数
    • 友元函数是在类定义中用 friend 关键字声明的非成员函数,它可以访问该类的私有和保护成员。
    • 示例代码如下:
#include <iostream>

class MyClass {
private:
    int privateData;
public:
    MyClass(int data) : privateData(data) {}
    // 声明友元函数
    friend void accessPrivate(MyClass obj);
};

// 友元函数的定义
void accessPrivate(MyClass obj) {
    std::cout << "Accessing private data: " << obj.privateData << std::endl;
}

int main() {
    MyClass myObj(42);
    accessPrivate(myObj);
    return 0;
}
  1. 成员函数接口
    • 类可以提供公共的成员函数,这些函数作为接口来访问和修改私有成员。
    • 示例代码如下:
#include <iostream>

class MyClass {
private:
    int privateData;
public:
    MyClass(int data) : privateData(data) {}
    // 公共成员函数来获取私有数据
    int getPrivateData() const {
        return privateData;
    }
};

int main() {
    MyClass myObj(42);
    std::cout << "Accessing private data through member function: " << myObj.getPrivateData() << std::endl;
    return 0;
}