多态小记--

本文详细介绍了C++中的多态性,重点讲解了虚函数的概念、实现机制(包括指针和引用的使用)、动态联编与静态联编的区别,以及纯虚函数和抽象类的作用。构造函数与析构函数中虚函数的运用也被提及,强调了它们在多态清理内存中的关键作用。
摘要由CSDN通过智能技术生成

个人理解:

多态是使函数复用更加方便简洁的一种c++功能,基于基类和派生类实现,虚函数是其实现的重要载体,多态的使用与动态联编有关。

例子

多态通过使用虚函数实现函数的重写而非重载,使多个派生类中可以存在同名同类型同形参的函数,而不会相互覆盖。(实现函数重写)

多态实现基础--虚函数

class base{

         virtual int get();虚函数即在普通类函数里面加“virtual"关键字,而在类外编写时不需要

};

int  base::get(){
}

多态的两种机制

1,指针使用

派生类指针赋给基类指针

1.该指针指向派生类对象,调用派生类虚函数
2.该指针指向基类对象,调用基类虚函数
2.引用的使用

派生类对象赋给基类的引用

同上

动态联编

静态联编指在程序编译过程中进行的,高效,占用内存空间小,充分体现c++特性

动态联编是在程序执行过程中进行的,当执行到虚函数所在行时才会判断调用哪个函数,由于其在实行过程中要建立指针数组的操作会增大内存,同时查找过程消耗时间,因此好用但不高效

虚函数访问权限

当基类为private时虚函数会调用失败,编译出错

构造函数与析构函数中调用虚函数

1。构造函数中没有虚函数(由于构造函数的调用具有顺序性,可理解为虚函数没有选择的对象,只能构造当前函数)

2.析构函数必须有虚函数(在派生类存在情况下)
原因是当多态发生时,以多态调用的第一种情况--指针为例,如果没有虚函数,则该指针被delete时只会清除基类的指针空间,派生类仍存在,占用内存,必须使用虚函数来调用派生类析构函数清除这一部分空间

纯虚函数与抽象类

虚函数后接”=0“并非赋值,而是表示此为纯虚函数。此函数所在类为抽象类,不能再实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值