成员函数的重载、覆盖、隐藏 和 虚函数

本文详细解析了 C++ 中成员函数的重载、覆盖与隐藏的区别,介绍了虚函数的概念及其限制条件,同时阐述了多态性的实现原理及意义。

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

成员函数的重载、覆盖、隐藏 和 虚函数

重载

成员函数被重载的特征是:
1)相同的范围(即在同一个类中);
2)函数名字相同;
3)参数不同;
4virtual 关键字可有可无。

5)返回值不同不算(例如:int func()void func()不是函数重载)

覆盖(重写)

是指派生类重新实现了基类的成员函数,特征是:
1)不同的范围(分别位于派生类与基类);
2)函数名字相同;
3)参数相同;
4)基类函数必须是虚函数(必须有关键字virtual,不能有static);

5)返回值相关

6 重写函数的权限访问符可以不同

隐藏

是指派生类的成员函数遮蔽了与其同名的基类成员函数,具体规则如下:
1)派生类的函数与基类的函数同名,但是参数列表不同。此时,不论有无virtual关键字,基类的函数在派生类中将被隐藏(注意别与重载混淆)。
2)派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

特征如下:

 1.不同的作用域(分别位于基类和派生类)

 2.函数名字相同

 3.返回值可以不同

 4.参数不同,此时不论有没有关键字virtual,基类的函数都将被隐藏

 5.参数相同,但没有关键字virtual,此时基类的函数将被隐藏

 

虚函数:

可以简单的说,用virtual修饰的成员函数就是虚函数。虚函数的作用就是实现多态性。多态性是将接口与实现进行分离;用形象的语言来解释

就是实现以共同的方法,但因个体差异,而采用不同的策略。

虚函数限制如下:

1.非类的成员不能定义为虚函数

2.类的静态成员函数不能定义为虚函数

3.构造函数不能定义为虚函数,析构函数应该定义为虚函数

4.只需要在声明函数的类体中使用关键字virtual将函数声明为虚函数,定义函数时不需要使用关键字virtual

5.当将基类中的某一成员函数声明为虚函数后,派生类中的同名函数(函数名相同,参数列表一致,返回类型相关)自动成为虚函数

 

多态:

多态,按照字面的意思就是"多种状态"简单的概括为"一个接口,多种方法",程序在运行时才决定调用的函数,是面向对象编程领域的核心概念。

面对对象编程(OPP)的主要特征:

封装:实现细节的隐藏,使代码模块化。把成员数据和成员函数封装起来,通过公共的成员接口进行成员数据的操作。

 继承:扩展已经存在的代码,目的是为了代码的重用。

 多态:目的是为了接口重用。也就是说,不论传递过来的究竟是那个类的对象,函数都能通过一个接口调用到适合各自对象的实现方法。

 

This指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值