Bootstrap

C++继承详解

@[TOC]继承详解

继承的概念

继承机制是面向对象程序设计使代码复用最重要的手段,它允许程序员在保持原有类特性上进行扩展,增加功能,这样产生新的类称为派生类(子类),继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。
简单理解就是:就像儿子继承父亲的资产一样,既有了父类原有的属性和功能由新增了自己的属性和功能即产生了子类(派生类)。

继承方式

class Base{
   }
class Derived:继承权限 Base{
   }

继承权限

pubilc、protected、private
作用:限制成员能否在类外和子类中进行访问
public:
基类中public,protected修饰的成员在继承之后访问权限依然是public、protected,private修饰的成员是不可访问的,但是依然会继承在子类中
protected:
基类中public,protected修饰的成员在继承之后访问权限变成protected,private修饰的成员是不可访问的,但是依然会继承在子类中
private:
在继承之后pubic,protected 、private的访问权限都是private,但是依然会继承在子类中

基类和派生类赋值转换

又叫赋值兼容规则,前提是子类必须使用public继承基类
(1)可以将子类对象直接赋值给一个基类对象 ,反之不行。
(2)可以将基类的指针和引用指向子类对象。
(3)不能使用子类指针或引用指向基类对象,但是可以使用强转。

子类对象如何构造与析构

(1)构造函数
如果基类中没有显式定义构造函数或者有无参构造函数和全缺省构造函数,子类可以根据自己需要是否显示定义构造函数。但是如果基类中显示定义带有参数的构造函数但不是全缺省构造函数,那么子类必须显示定义构造函数。
(2)拷贝构造函数
子类的拷贝构造函数必须调用基类的拷贝构造函数
(3)赋值运算符重载
子类的operator=必须要调用基类的operator=完成基类的赋值
(4)析构函数
不需要在子类中调用基类的析构函数
子类的析构规则
a.先调用自己的析构函数清理自己资源
b.再调用基类析构函数清理继承资源
以上步骤由编译器自己完成</

;