类的访问控制

类的访问控制标号:private,public,protected三种

private:只能由类内部访问,不能被类外部(类对象和外部程序)访问;
public:既可以被类内部访问,又可以被类外部(类对象和外部程序)访问;
protected:只能由类内部及该类的派生类内部访问(派生类中只能通过派生类对象来访问其基类的protected成员)
类的友元可以访问所有元素

类继承时也有3种继承.也是public,private,protected三种继承。派生类对所继承的成员的访问由基类的成员访问级别和派生类的继承方式共同决定。基类决定对成员的根本控制

权限,派生类只能进一步限制,不能放宽访问限制。基类的private成员只能由基类及基类的友元访问。
1.public继承  派生类中基类成员保持自己的访问级别。
2.protected继承  基类的public成员和protected成员在派生类中为protected成员
3.private继承  基类所有成员在派生类中为private成员.
如果需在private和protected继承中恢复基类成员的访问级别,可使用using声明.如D类是private继承A类,可使用using A::publicInt;来恢复publicInt的访问级别


如A类中,privateInt可在类的成员函数中访问,但不能再类外被访问。
publicInt可在类外和类内被访问。
protecteInt 与privateInt一样,可在类的成员函数中访问,但不能再类外被访问。但可在派生类中被派生类的成员函数访问。
在B类内部,不能访问privateInt,可以访问protectInt和publicInt。而且只能通过B类对象访问,不能通过基类A的对象访问。
在B类外部,也只能访问publicInt。
B类属于public继承,不能访问privateInt,protectInt和publicInt的访问控制权限不变
C类属于protected继承,不能访问privateInt。publicInt的访问控制权限降为protected访问控制权限。即类外部无法访问publicInt。
D类属于private继承,不能访问privateInt.protectInt和publicInt的访问控制降为D类的private成员。
class A{
    private:
 int privateInt;
    protected:
       int protectInt;
    public:
       int publicInt;
       void fun(const A& pa){
             privateInt = pa.privateInt;
      protectedInt = pa.protectedInt;
 }
}
class B:public A{
     public:
        void fun(const A& pa,const B& pb){ 
     protectInt = pb.protectInt;
 }

}
class C:protected A{
       
}
class D:private A{
public:
   using A::fun;
protected:
   using A::protectInt;//
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值