C++ 类继承访问权限及外部访问权限

本文深入探讨了C++中访问权限的基本原则,包括外界对类成员的普通访问和继承关系中子类对父类成员的访问。详细解析了public、protected、private修饰符的作用,以及不同继承方式对访问权限的影响。

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

C++ 访问权限问题主要包括两种:一种是外界对类成员的普通访问,主要通过类内的public、protected、private权限修饰符;另一种是继承关系中子类对父类成员的访问。

基本原则:外界只能访问类中public成员,子类可访问父类的public和protected成员;不同继承方式只影响外界(包括子类的子类)通过子类对父类成员的访问权限。

 

  •  外界对类成员的普通访问

1. 当类成员在类中为public权限时,才可在类外访问,其余不可访问。

2. 若存在继承关系,从父类继承来的成员若在该类中仍具有public权限,也可在类外访问,其余不可访问。

   

  • 继承关系中子类对父类成员的访问

1. 无论通过什么方式(public、protected、private)继承,在子类内部均可访问父类中的public、protected成员,private成员不可访问。

    注意:

      继承方式只影响外界(包括子类的子类)通过子类对父类成员的访问权限。

      public继承,父类成员的访问权限全部保留至子类;

      protected继承,父类public成员的访问权限在子类中降至protected;

      private继承,父类public、protected成员的访问权限在子类中均降至private。

2. 父类的析构函数若声明为protected (无论有无virutal),外界均不可调用delete 父类指针;因为是protected权限,子类析构后会自动调用父类析构函数。

   这种情况下,最好不要在父类成员中有动态内存分配。

3. 通过protected/private继承的子类,不能通过static_cast/dynamic_cast向父类转换;只能通过reinterpret_cast引用或指针的方式强制转换,按照父类内存结构重新解释,可改变成员的访问权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值