跳到主要内容

C++中类型为 private 的成员变量可以由哪些函数访问?

参考答案:

在C++中,private 成员变量只能被该类的成员函数(无论是publicprotected还是private)访问。这是private访问修饰符的主要目的:隐藏类的内部实现细节,只通过类的成员函数(也称为接口)暴露给类的使用者。

以下是几种可以访问private成员变量的函数:

  1. 公有成员函数(Public Member Functions):公有成员函数是类的外部可以访问的函数。它们可以访问类的所有成员,包括private成员变量。
class MyClass {
private:
    int myVar;

public:
    void setVar(int value) {
        myVar = value;  // 访问private成员变量
    }
    int getVar() {
        return myVar;  // 访问private成员变量
    }
};
  1. 保护成员函数(Protected Member Functions):保护成员函数只能被该类或其派生类访问。它们也可以访问private成员变量。
class MyClass {
private:
    int myVar;

protected:
    void modifyVar(int value) {
        myVar = value;  // 访问private成员变量
    }
};
  1. 私有成员函数(Private Member Functions):私有成员函数只能被该类的其他成员函数访问。因此,它们也可以访问private成员变量。
class MyClass {
private:
    int myVar;
    void helperFunction() {
        myVar = 0;  // 访问private成员变量
    }

public:
    void resetVar() {
        helperFunction();  // 调用私有成员函数来访问private成员变量
    }
};

注意,尽管private成员变量可以由类的成员函数访问,但它们不能被类的实例(对象)直接访问,也不能从类的外部通过任何方式访问。这是C++封装和数据隐藏原则的一部分。