栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 类的继承访问控制问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 类的继承访问控制问题

下列程序编译时会出现错误,请根据行号选择错误位置:1,2,4,5,6

#include 
using namespace std;
class A{
  int a1;
protected:
  int a2;
public:
  int a3;
};
class B: public A{
  int b1;
protected:
  int b2;
public:
  int b3;
};
class C:private B{
  int c1;
protected:
  int c2;
public:
  int c3;
};
int main(){
  B obb;
  C obc;
  cout< 

根据上题子类对父类的不同继承可以得到下图:

 对该题进行分析如下:

 总结: 派生类中成员的访问属性:

(1)基类中访问属性为公有public:派生类中可以访问;派生类外部(指建立派生类对象,在派生类的类外部)可以访问;下层公有派生类中可以访问。

(2)基类中访问属性为保护protected:派生类中可以访问;派生类外部(指建立派生类对象)不可访问;下层公有派生类中可以访问。

(3)基类中访问属性为私有private:派生类中可以访问;派生类外部(指建立派生类对象)不可访问;下层公有派生类中不可访问。

(4)私有继承和保护继承的区别(即在私有派生类和保护派生类中的区别):在直接派生类中,两者均为在类外不可访问,而在派生类中可以通过成员函数访问基类的私有成员和保护成员;若继续派生,私有成员在派生类中也无法访问。

(5)对于protected保护成员:其在基类中可以被访问;在派生类中可以被访问;但类的实例(创建类的对象)无法访问。

对上图进行总结+扩充:

(1)一个类的访问控制为:

    public:公有成员,可以被类内及类外访问。
    private:私有成员,只能被内部访问。
    protected:保护成员,只能被内部或继承类内部访问。

(2)继承类的访问修饰符为:

    无论何种继承,在继承类中父类的私有成员在子类中依然存在,但均不可访问。
    public:公有继承,父类成员在子类中保持原有的访问属性。
    private:私有继承,父类成员在子类中成为私有成员。
    protected:保护继承,public和protected均变为protected,private也变为private。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号