C++ 多态 虚函数 纯虚函数 动态、静态转换

本文探讨了C++中的多态性,重点介绍了虚函数和纯虚函数的概念和作用。多态允许通过父类指针管理子类对象,简化代码维护。虚函数确保调用正确的子类覆盖函数,而虚析构函数防止内存泄漏。抽象基类含有纯虚函数,不能实例化,仅用作接口。子类必须实现纯虚函数,否则也将成为抽象类。多态虽带来便利,但也增加内存开销和运行时速度损失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态:由父类指针统一操作子类对象

多态优点:由父类指针管理子类,可以照顾到未来代码(维护)。比如说添加一个新的子类,只需要重写函数,不必修改源代码

虚函数 :父类指针、引用调用正确的被覆盖的函数,此时成员函数需要声明成虚函数

注意:如果父类中的成员函数是虚函数,那么子类中重写这个函数默认为虚函数

父类指针、引用调用函数:1、查看基类中函数是否为虚函数2、不是的话调用父类成员函数,是的话查看指向,调用对应的对象


虚析构函数:如果有继承,父类中的析构函数必须是虚析构函数 (否则会造成内存泄漏)手动delete时用到


多态的影响:

1⃣️增加内存(类中有虚函数,每个对象默认增加一个指针->虚指针)

2⃣️减慢程序运行的速度(虚指针指向虚函数表,通过遍历虚表,寻址找到调用的对应函数)


抽象基类和纯虚函数:

抽象基类作用:用做接口,给子类提供成员变量、成员函数


纯虚函数:一个函数=0,没有函数体。

抽象基类:如果一个类包含纯虚函数,那么这个类就是一个抽象类,抽象类不能创建对象只能当做基类使用,所以也叫作抽象基类

注意:1、抽象基类不能创建对象(纯虚函数的存在)

           2、子类中必须实现继承自抽象基类中的纯虚函数,如果子类不能实现纯虚函数,那么子类也将成为一个抽象类

           3、函数参数可以是抽象类的引用、指针,形参不能传值的形式。

           4、函数返回值可以是抽象类的引用、指针,不能是值返回形式


virtual:根据指向  父类指针、引用指向之后调用对应的版本函数

virtual析构函数:父类析构函数必须是虚析构

多态的代价:1、内存 2、运行速度

抽象基类和纯虚函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值