C++学习之继承中的成员访问控制

本文详细阐述了在C++中,基类成员在派生类中的访问权限变化规律,包括公共、受保护和私有继承情况下,派生类对象及派生类内部如何访问基类成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由基类到派生类的过程中,在派生类里如何访问基类成员,以及派生类对象如何访问基类成员,是根据派生类在从基类派生时是以什么方式进行的派生:public、protect或者private。下面说一下在这三种派生方式下成员函数和成员变量的访问和修改权限。派生类是指直接派生类!

【代码1】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Base{
     //其他内容
public :
     int BaseFunPb(){ return m_nPb;}
     int BaseFunPt(){ return m_nPt;}
     int BaseFunPr(){ return m_nPr;}
public :     int m_nPb;
protected int m_nPt;
private :    int m_nPr;
};
class Cpb: public Base{
     //其他内容
public :
     int GetPb(){ return m_nPb;}
     int GetPt(){ return m_nPt;}
     int GetPr(){ return m_nPr;}
};
class Cpt: protected Base{
     //其他内容
public :
     int GetPb(){ return m_nPb;}
     int GetPt(){ return m_nPt;}
     int GetPr(){ return m_nPr;}
};
class Cpr: private Base{
     //其他内容
public :
     int GetPb(){ return m_nPb;}
     int GetPt(){ return m_nPt;}
     int GetPr(){ return m_nPr;}
};
   
int main()
{
     Cpb objB;
     Cpt objT;
     Cpr objR;
     //其他内容
}

访问分为:类对象访问、类内访问两种;

对于基类继承下来的成员的访问与修改权限如下:

基类成员访问权限(列
public protected private 
派生方式(行)派生类对象派生类类内派生类对象
派生类类内
派生类对象
派生类类内
public可访/可修权限:public
可访/可修
可访/不可修权限:protected
可访/不可修
可访/不可修权限:private
可访/不可修
protected可访/不可修权限:protected
可访/可修
可访/不可修权限:private
可访/可修
可访/不可修权限:private
不可访/不可修
private可访/不可修权限:private
可访/可修
可访/不可修权限:private
可访/可修
可访/不可修权限:private
可访/不可修

派生类内不管是 public、protected、private 继承,总是可以访问基类中的public、protected 成员,基类中的 private 成员永远不能在派生类内直接访问,不论通过哪种方式。

派生类对象仅当public派生时,对基类中的public成员有可访问/可修改的权限,其他都为不可访问/不可修改。

用‘B’代表public,用'T‘代表protected,用'R’代表private;BT->T代表基类成员访问权限为B,派生方式为T,派生后成员在派生类内的访问权限为T;‘r'表示可访问,’w'代表可修改,‘-'表示不可访问或不可修改,在第一位表示不可访,在第二位表示不可修;则上表简化为如下:

 

访问权限变更
派生类对象派生类类内访问权限变更派生类对象派生类类内访问权限变更
派生类对象派生类类内
BB->BrwrwTB->T--r-RB->R----
BT->T--r-TT->R--r-RT->R----
BR->R--r-TR->R--r-RR->R----

当派生类下面还有派生类时,派生类作为基类,权限更改同上!

 



转载于:https://www.cnblogs.com/lomper/p/4104542.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值