继承方式:描述了父类成员在子类中所表现的属性,决定了其在子类中的使用范围
继承方式有三种:public 、 protected 、 private
class Father
{
public:
int m_one = 1;
protected:
int m_two = 2;
private:
int m_thr = 3;
};
class Son :public Father
{
public:
void funpub()
{
cout << m_one << endl;
cout << m_two << endl;
//cout << m_thr << endl; 已继承但无法访问
}
};
子类不能直接访问父类的private成员
可以通过在子类调用父类中的函数返回父类中的private属性值
int get()
{
return m_thr;
}
构建一个子类对象,并输出通过子类输出父类的成员属性值
Son son;
cout << son.m_one << endl;
可以看到是可以输出的,那么就说明父类public成员继承后仍然是public
cout << son.m_two << endl;
想输出protected成员时不可访问
再构建一个子类的的派生类
class GrandSon :public Son
{
public:
void fun()
{
cout << m_two << endl;
}
};
可以发现在子类的子类中也是protected
继承方式 | public |
父类属性 | 子类属性 |
public | public |
protected | protected |
private | private |
继承方式 | protected |
父类属性 | 子类属性 |
public | protected |
protected | protected |
private | 不可访问 |
继承方式 | public |
父类属性 | 子类属性 |
public | private |
protected | private |
private | 不可访问 |