基类与派生类,类派生列表说明符,public,protected,private的作用

以什么方式继承基类的共有数据成员;例:

#include

using namespace std;

class A{
    int n;
    static int sn;
protected:
    int np; 
    static int sn2;
public:
    static int sn3;
    int a;
};

class B:private A{
    int f(){ 
        //return n; //这个使错误的,提示已定义,不可访问
        return np;//可访问protected成员。
    }
};

class C :public B{
    int b(){
        //return sn3;//错误,不可访问。
        //return a;  //同上
    }
};

int main(){
    //A::sn = 0;//错误,不可访问
    //A *b=new B;//当B private继承A时,此处错误提示,不允许对不可访问的基类A进行类型转换,public就没问题
    B a;
    //a.a = 0;//错误提示,不可访问
    A::sn3=0;
    return 0;
}

总结

首先回顾一下三种成员访问限定符(包括静态成员):
public(公用的):既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数(即类外)引用。
private(私有的):只能被本类中的成员函数引用,类外不能调用(友元类除外)
protected(受保护的):不能被类外访问,但可以在派生类的成员函数访问。

接下来就用一张表总结一下基类成员在派生类中的访问属性:基类与派生类,类派生列表说明符,public,protected,private的作用_第1张图片

可以这么简单的认为:
1、凡是基类中私有的,派生类都不可访问。
2、基类中除了私有的成员,在派生类中的访问属性总是 以安全性高{ 继承方式,基类的访问属性 } 的方式呈现。(安全性级别:私有>保护>公有)

你可能感兴趣的:(c++学习,继承,class,c++,访问控制)