以什么方式继承基类的共有数据成员;例:
#include<iostream>
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(受保护的):不能被类外访问,但可以在派生类的成员函数访问。
接下来就用一张表总结一下基类成员在派生类中的访问属性:
可以这么简单的认为:
1、凡是基类中私有的,派生类都不可访问。
2、基类中除了私有的成员,在派生类中的访问属性总是 以安全性高{ 继承方式,基类的访问属性 } 的方式呈现。(安全性级别:私有>保护>公有)