类的访问控制

来源:互联网 发布:郝蕾辱骂河南人 知乎 编辑:程序博客网 时间:2024/05/21 09:35

类的访问控制标号: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;//
}

原创粉丝点击