基类成员再派生类中的访问权限不能高于继承方式中指定权限。(在高于时,编译器会自动把该权限转变成继承方式中指定权限)
private: 可以在类的内部访问,在类的外部与派生类中不能被访问。
protected:可以在类的内部与派生类中访问,在类的外部不能被访问。
public: 在类的内部,类的外部和派生类中都能被访问。
#include<iostream>
using namespace std;
class A
{
private: //类的内部可以访问,派生类不可以访问
int m_a;
protected:
int m_b;
public:
int m_c;
public:
void print1()
{
cout<<"m_a:"<<m_a<<endl;
cout<<"m_b:"<<m_b<<endl;
cout<<"m_c:"<<m_c<<endl;
}
};
class B :public A
{
// public:
// int m_c;
public:
void print2()
{
cout<<"m_c:"<<m_c<<endl;
}
};
class C:protected A //类的内部可以访问,派生类也可以访问,类的外部不可以访问
{
//protected:
// int m_b;
//protected:
// int m_c; ,改变了m_c权限
//不能打印 m_a,因为 m_a是私有的!!!!
public:
void print3()
{
cout<<m_c<<endl;
}
};
class D:private A
{
//private:
// int m_b;
//private:
// int m_c;
public:
void print4()
{
cout<<"m_b:"<<m_b<<endl;
}
};
int main()
{
A a;
B b;
C c;
D d;
// b.m_b; protected在类外不能访问; 在类内和派生类中可以访问;
// c.m_c; 变成了protected型;
// d.m_c;
b.print2();
}