C++ 类的继承方式

C++ 类的继承方式

有三种继承方式: public protected private 继承

继承方式在派生类中的访问方式是基类的保护权限,派生类创造的对象是继承方式所决定,基于前面的继承权限(感觉好拗口,有好的描述方式,还请各位coder不吝赐教)

类成员权限\类继承方式 public继承 protected继承 private继承
基类public成员 类内可见,类外可见 类内可见,类外不可见 类内不可见,类外不可见
基类protected成员 类内不可见,类外不可见 类内不可见,类外不可见 类内不可见,类外不可见
基类private成员 类内不可见,类外不可见 类内不可见,类外不可见 类内不可见,类外不可见

特别说明:

protected成员的特点与作用
①与建立其所在类对象的模块来说,它与private成员的性质相同;
②对于其派生类来说,它与public成员的性质相同;
③既实现了数据隐藏,又方便继承,实现代码重用。

#include 

class Base {
public:
    int x;
protected:
    int y;
private:
    int z;
};

class subPubClass : public Base {
public:
    void test() {
        this->x = 12;  // 可访问基类的public权限成员
        this->y = 12;  // 可访问基类的protected权限成员
        //  this->z = 12;  // error 不可访问基类的private权限成员
    }
};

class subProClass : protected Base {
protected:
    void test() {
        this->x = 12;  // 可访问基类的public权限成员
        this->y = 12;  // 可访问基类的protected权限成员
        //  this->z = 12;  // error 不可访问基类的private权限成员
    }
};

class subPriClass : private Base {
public:
    void test() {
        this->x = 12;  // 可访问基类的public权限成员
        this->y = 12;  // 可访问基类的protected权限成员
        //  this->z = 12;  // error 不可访问基类的private权限成员
    }
};


int main() {
    auto pubobj = subPubClass();
    auto proobj = subProClass();
    auto priobj = subPriClass();

    // 公有继承
    pubobj.x = 12; // 可访问基类的public权限成员
    // pubobj.y = 12; // error 不可访问基类的protected权限成员
    // priobj.z = 12; // error 不可访问基类的private权限成员

    // 保护继承
    // proobj.x = 12; // error 不可访问基类的public权限成员
    // proobj.y = 12; // error 不可访问基类的protected权限成员
    // proobj.z = 12; // error 不可访问基类的private权限成员
    
    // 私有继承
    // priobj.x = 12; // error 不可访问基类的public权限成员
    // priobj.y = 12; // error 不可访问基类的protected权限成员
    // priobj.z = 12; // error 不可访问基类的private权限成员

    return 0;
}

水平有限,有错误还请指出,大家共同学习,谢谢!

参考链接:
C++保护继承
c++:继承(超详解)

你可能感兴趣的:(C/C++,c++)