一、默认权限

struct 默认公有权限

1
2
3
4
struct A
{
public:
};

class 默认私有权限

1
2
3
4
class B
{
private:
};

二、默认继承权限

(1)class 继承 struct

1
2
struct A{};
class B : A{}; //默认私有继承

(2)struct 继承 class

1
2
class A{};
struct B : A{}; //默认公有继承

😀总结:以派生类的默认权限作为继承权限


三、继承权限探究

(1)公有继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Base
{
private:
int _Ba;
protected:
int _Bb;
public:
int _Bc;
};

class Son : public Base
{
private:
int _Sa;
protected:
int _Sb;
public:
int _Sc;
};

😋Son的内存结构模型(类内访问)

在这里插入图片描述

(2)私有继承

1
2
3
4
class Base{};
class Son : private Base
{};

😋Son的内存结构模型(类内访问)
在这里插入图片描述

(3)保护继承

1
2
3
4
class Base{};
class Son : protected Base
{};

😋Son的内存结构模型(类内访问)
在这里插入图片描述

总结:
1. 无论采取何种继承方式,派生类都可以类内访问基类中的public和protected权限的成员属性

2. 采用何种继承方式,继承而来的基类成员和方法就以该种权限存在于派生类中


四、继承和派生类中定义基类成员权限的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Base
{
private:
int _Ba;
protected:
int _Bb;
public:
int _Bc;
};

class Son : public Base
{
private:
int _Sa;
Base _SB_a; //基类对象
protected:
int _Sb;
public:
int _Sc;
};

😃Base对象模型:
在这里插入图片描述
总结:派生类中定义基类对象,访问成员只能类内访问public权限的属性。(区别继承:无法内类访问protected权限)

注意:😃要区别于类外访问!!!类外只能访问public