C++中类型为 private 的成员变量可以由哪些函数访问?
参考答案:
在C++中,private
成员变量只能被该类的成员函数(无论是public
、protected
还是private
)访问。这是private
访问修饰符的主要目的:隐藏类的内部实现细节,只通过类的成员函数(也称为接口)暴露给类的使用者。
以下是几种可以访问private
成员变量的函数:
- 公有成员函数(Public Member Functions):公有成员函数是类的外部可以访问的函数。它们可以访问类的所有成员,包括
private
成员变量。
class MyClass {
private:
int myVar;
public:
void setVar(int value) {
myVar = value; // 访问private成员变量
}
int getVar() {
return myVar; // 访问private成员变量
}
};
- 保护成员函数(Protected Member Functions):保护成员函数只能被该类或其派生类访问。它们也可以访问
private
成员变量。
class MyClass {
private:
int myVar;
protected:
void modifyVar(int value) {
myVar = value; // 访问private成员变量
}
};
- 私有成员函数(Private Member Functions):私有成员函数只能被该类的其他成员函数访问。因此,它们也可以访问
private
成员变量。
class MyClass {
private:
int myVar;
void helperFunction() {
myVar = 0; // 访问private成员变量
}
public:
void resetVar() {
helperFunction(); // 调用私有成员函数来访问private成员变量
}
};
注意,尽管private
成员变量可以由类的成员函数访问,但它们不能被类的实例(对象)直接访问,也不能从类的外部通过任何方式访问。这是C++封装和数据隐藏原则的一部分。