C++三大特性

前言

c++分为三大特性:封装、继承、多态

封装目的是实现代码模块化。
继承目的是实现代码扩展。
多态目的是分为静态多态和动态多态。静态多态:函数重载和泛型编程。动态多态:虚函数重写。

一、封装

  封装就是将数据和行为有机结合起来,形成一个整体。把数据和处理数据的操作结合形成类,数据和函数都是类的成员。

封装的类有如下的访问类型:

1)公有( public )成员可以在类外访问; 

2)私有( private )成员只能被该类的成员函数访问; 

3)保护( protected )成员只能被该类的成员函数或派生类的成员函数访问。

二、继承

Is a -à继承关系     A is a B

这个已有的类称为基类,新建的类称为子类。例如,定义手机是基类,那么派生类可以是华为或者是苹果,等等。

类继承父类的所有(数据成员、成员函数) 

继承的格式是什么?

        Class 子类名:继承方式 父类名{};

继承方式:

  Public继承: 父类中public成员继承到子类中,在类外、类内都可以访问

                       父类中private成员在子类类内中是不可访问

                      父类中protected成员在子类类内是可以访问

  Private继承:

               父类中public成员继承到子类中,在类外不可以访问,类内部是可以访问

               父类中private成员在子类类内是不可以访问的

               父类中protected成员在子类类内是可以访问

  Protected继承:

父类中public成员继承到子类中,在类外不可以访问,类内部是可以访问

                   父类中private成员在子类类内是不可以访问的

                   父类中protected成员在子类类内是可以访问

2、子类的构造函数

 

3、子类的析构函数:

   先构造的后析构

4、多层继承

 

 三、多态

  动态多态,是基于封装和继承的来实现的,多个子类对继承于一个父类的虚函数进行重写,来实现不同状态

实现动态多态的条件:

  1. 必须有继承
  2. 父类中有虚函数,子类有重写这个虚函数(子类中的函数和父类中的这个函数的首部必须是一模一样的,只有函数体内部是不同的)
  3. 通过父类的指针或者是引用去调用这个虚函数的时候

  多态实现的原理

  一个类中如果有虚函数,那这个类就有一张虚函数表,这个表中存的就是这个类所有虚函数的地址(函数指针数组)

  

  多态存在的问题 

 

用父类的指针去释放子类的对象,析构只执行了父类的,没有走子类的析构(析构函数的作用),会存在内存泄漏问题。

 父类的析构函数变成虚析构函数就可以实现delete 父类指针也会执行子类析构的效果 

重定义、重写、重载的区别

重载:同一个作用域(构造函数重载)

重定义(隐藏): 在继承关系中,子类定义了和父类同名的函数(只有函数名相同—不包括虚函数)

重写:在继承关系中,子类重写了父类的虚函数(函数的首部是一模一样的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值