#include<iostream>//c++标准的输入和输出流
using namespace std;//引用标准的名空间std
class person
{
public:int m_age;
private:string m_lover;
protected:string m_car;
};
class son1 :public person
{
void func()
{
m_age = 10;//公共权限 类内类外都可以访问
m_car = "daben";//保护权限,在类内可以访问,在类外不可以访问
//m_lover = "lisa";//报错,父类的私有权限即使在
//公共继承下子类也是不可以访问的
}
};
class son2 :protected person
{
void func()
{
m_age = 10;//公共权限,在保护继承下变成了保护权限
m_car = "lisi";//保护权限在保护继承下也是保护权限
//注意保护权限在类内可以访问,在类外是不可以被访问的
}//而公共权限在类内和类外都可以被访问
//而私有权限在类内和类外都不可以被访问
};
class son3 :private person
{
public:
void func()
{
m_age = 10;
m_car = "jo";//在私有继承的继承方式下,所有的属性、
//变成了私有的,他的儿子是都不可以访问的
}
};
class grandson3 :public son3
{
void func()
{
//m_age = 10;
//m_car = "kji";
}
};
void test01()
{
son1 p1; p1.m_age = 10; //p1.m_car = "ni"; p1.m_lover = "lsi";
//被注释掉的都是不可以访问的
son2 p; //p.m_age = 10; p.m_car = "ni"; p.m_lover = "lsi";
son3 p3;
}
int main(void)
{
test01();
}
/*总结: //父类中公共的属性按照公共的方式继承该属性也是公共的(在类内和类外都允许访问) //父类中公共的属性按照保护和私人的继承方式的属性不是公共的 //按照保护继承的方式继承下的属性实在子类的类内中可以访问的 //该属性变成看受保护的,但是该属性在类内允许访问 //但是按照私有的方式继承下的属性在子类的类内中时不允许访问的 //该属性已经变成私有的了(在类内也不允许访问) //并且父类中受保护的属性按照公共的方式继承该属性仍然时protected //简单来讲就是: //只有父类中私有的属性在子类的类内和类外读不允许访问 //并且只有子类继承下来的公共的属性既可以在类内访问 //又可以在类外访问 */
还没有评论,来说两句吧...