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

C++中的继承

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

C++中的继承

继承
  • 继承简介
  • 继承方式
  • 多继承
  • 继承中的问题
    • 1、基类和子类成员同名会怎样?
    • 2、基类中的友元函数,子类能继承没?
    • 3、继承中基类和子类,构造析构顺序
    • 4、多继承造成的菱形继承问题

继承简介

    继承就子类继承父类或基类的全部成员函数和成员变量,而且在此基础上继承的子类还可以自己添加自己的成员,如上图所示,子类1,不仅继承了父类的_name和_status_num,而且自身还添加了一个_sex,子类2则多了_is_student,这个与类和对象有点像,只不过这个对象也使类,而且还可以添加自己的成员函数或者成员变量。

继承方式

    继承的具体代码实现如下:

class father//父类/基类
{
    public:
       char* _name;
       int _status_num;
};

//继承
class  son:public father//继承方式 + 继承的类
{
    public:
      char* _sex;//子类自己的成员变量
};

    由上代码可知,子类继承时,就是在自己的类名旁边加上继承方式+父类名,而这个继承方式,就是子类中继承的成员的权限。继承方式的权限问题,看下表所示:

权限父类public父类protected父类provite
子类public继承publicprotected子类中不可见
子类protected继承protectedprotected子类中不可见
子类private继承privateprivate子类中不可见

    由上表可知,成员继承的权限是只能缩小的,权限大小可表示为public > protected > private。其中子类继承时,子类不可见,是因为成员在父类中私有了,子类就看不见了,但是不是没继承。

多继承

    多继承就是一个子类继承了多个基类的成员,具体代码如下:

class a
{
    int a;
};
class b
{
    int b;
};
class c:public a,public b
{
    int c;
};
继承中的问题 1、基类和子类成员同名会怎样?

    如果基类和子类同名,基类的成员会被隐藏起来,这里不是没继承,如果要使用这个同名的成员,必须指定作用域,不然用不了会报错。

2、基类中的友元函数,子类能继承没?

    继承不了,比如别人的朋友不一定是你的朋友。

3、继承中基类和子类,构造析构顺序

    构造:先基类,后子类
    析构:先子类,后基类
    跟栈一样,后入先出。

4、多继承造成的菱形继承问题


    菱形继承如上图所示,这时D中会有两个a成员,分别来自B和C,然后就会出现数据冗余,而且出现二义性,调用的时候必须指定作用域才能使用。在继承时加入virtual可解决数据冗余和二义性问题。具体操作如下代码:

calss B:virtual public A
{};
calss C:virtual public A
{};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/289502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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