C++中继承的总结

一. 继承的概念

继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。

二.继承方式

这里写图片描述

三.继承体系中的作用域

1. 在继承体系中基类和派生类是两个不同作用域。

2. 子类和父类中有同名成员,子类成员将屏蔽父类对成员的直接访问。(在子类成员函数中,可以使用 基类::基类成员 访问)–隐藏 –重定义

3. 注意在实际中在继承体系里面最好不要定义同名的成员。

class base
{
public:
    base(const char* name = "",int id = 0)
        :_name(name),_num(id)
    {}
protected:
    string _name;   //姓名
    int _num;     //身份证号   与子类_num成员同名
};
class derive  :public base
{
public:
    derive(const char* name,int id,int num)
        :base(name,id),_num(num)
    {}

    void Display()
    {
        cout << "身份证号:" << base::_num << endl;  //通过作用域解析符来指定
        cout << "学号:" << _num << endl;
    }
protected:
    int _num;   //学号   与父类_num成员同名
};
void Test()
{
    derive d("paul",110,1);
    d.Display();
}
int main()
{
    Test();
    system("pause");
    return 0;
}

四.继承关系

1.单继承

一个子类只有一个直接父类时称这个继承关系为单继承。

这里写图片描述

2.多继承

一个子类有两个或以上直接父类时称这个继承关系为多继承。

这里写图片描述

3.菱形继承

这里写图片描述

五.对象模型

有两个概念可以解释C++对象模型:

1、语言中直接支持面向对象程序设计的部分。
2、对于各种支持的底层实

这里写图片描述

六.虚拟继承

虚拟继承是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类,它可共享的特性,避免了拷贝多份相同的数据,从而解决菱形继承的二义性和数据冗余的问

class Base
{
public:
    Base() 
    {
        cout << "B()" << endl;
    }
    int b1;
};
class Derive : virtual public Base
{
public:
    Derive() 
    {
        cout << "D()" << endl;
    }
    int d1;
};
void Test()
{
     Derive tmp;
     tmp.d1 = 1;
     tmp.b1 = 2;
}
int main()
{
     Test();
     getchar();
     return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值