C++类成员(成员数据和成员函数)的访问权限主要有三种,public(公有成员)、private(私有成员)和protected(保护型成员)。总体来说权限public>protected>private。
1、private成员
private成员只能被类内的成员函数操作和被友元(函数/类)(friend)访问。(友元是在该类中声明的可以访问该类私有成员和保护型成员的函数/类,具体见https://blog.youkuaiyun.com/zzyczzyc/article/details/87632702)
类外对象不能直接访问类中的私有成员,只能通过共有的成员函数来访问。
例如:
class Base
{
public:
Base();
void test_pub();
private:
void foo();
protected:
int m;
};
int main(){
Base *b = new Base();
b->test_pub(); // 通过
b->foo(); // 报错
...
}
2、protected成员
protected成员能被基类中的成员函数和子类中的成员函数操作,和被友元(函数/类)访问。但不能被基类和子类的类外对象直接访问。