继承方式

#include<iostream>
using namespace std;

class base
{
public:
    int m_a;
protected:
    int m_b;
private:
    int m_c;
};
//公共继承
class son1 :public base
{
public:
    void func()
    {
        m_a = 100;//公共权限继承为公共权限
        m_b = 100;//保护权限继承为保护权限
        //m_c = 100;//私有权限不能访问
    }
};
void visit()
{
    son1 a;
    //a.m_b = 100;//类外不能访问保护权限
    a.func();
}

//保护继承
class son2 : protected base
{
public:
    void func()
    {
        m_a = 100;//公共权限继承为保护权限
        m_b = 100;//保护权限继承为保护权限
        //m_c = 100;//私有权限不能被访问
    }
};

class son3 : private base
{
public:
    void func()
    {
        m_a = 100;//公共权限继承为私有权限
        m_b = 100;//保护权限继承为私有权限
        //m_c = 100;//私有权限不能被访问
    }
};

class grandson : public son3
{
public:
    void func()
    {
        //m_a = 100;//在son3中公共权限已经成为了私有权限,孙子也访问不到
        //m_b = 100;//在son3中保护权限已经成为了私有权限,孙子也访问不到
    }
};

 

posted @ 2021-01-10 11:31  loliconsk  阅读(76)  评论(0)    收藏  举报