继承、成员访问权限

//add helo 2014.6.4

类成员的访问位置:

1.类定义范围内,主要是指函数定义的范围内,该范围内类成员访问无限制。

2.类定义范围外,如在main()函数中访问,有访问权限限制。

//add end

1.用户访问继承类对象权限:

即在类定义外访问类对象成员数据或调用成员函数,例如如下代码:

 1 class base
 2 {
 3 public:
 4 int item_public;
 5 private:
 6 int item_private;
 7 };
 8 
 9 int main()
10 {
11  base a;
12 //用户访问类对象成员
13  a.item_public=0;//ok, 访问权限为public
14  a.item_private=1; //error, 访问权限为private
15 }

a.用户访问继承类对象的成员时,可将类成员分为两类

  • 继承类自定义成员:由继承类定义的权限决定
  • 基类成员:由继承方式决定访问权限 
class base
{
public:
int item_public;
protected:
int item_protected;
};

class derived :private base
{
 public:
int item_d_public;
int func()
{
return  item_public;//基类成员相对继承类成员的访问权限不因继承的方式改变
}
}

int main()
{
 derived d;
d.item_d_public //ok;
d.item_public //error ,此处item_public 对于用户的权限为private
                       //继承方式影响用户调用继承类对象基类部分的权限
}

b.继承方式影响用户调用继承类对象基类部分的权限,继承类内访问基类成员的权限不改变。

2.成员访问的几种方式

  • 类内成员访问:类成员函数访问自己的成员变量,无权限限制。类成员函数访问基类成员,由基类访问控制权限决定。
  • 用户访问对象成员:如前。
原文地址:https://www.cnblogs.com/helo-blog/p/3292604.html