C++中的重载、覆盖、隐藏

本文详细介绍了C++中的三个重要概念:重载、覆盖和隐藏。重载发生在同一作用域内,通过参数列表区分不同的函数;覆盖(重写)涉及继承,派生类对基类虚函数的重新实现;隐藏则指派生类的函数使基类同名函数不可见。通过示例代码解释了这三个概念的实现机制和差异。
摘要由CSDN通过智能技术生成

一、重载

概念:重载是指相同的范围中(例如一个类)不同的函数使用相同的函数名,但是函数的参数个数或类型或顺序不同。调用的时候根据函数的参数来区别不同的函数。重载函数的返回值可相同也可不同。重载在编译期就可以确定了。

注意重载是C++中独有的C语言中没有重载,要追究这一问题那就需要从编译的角度去分析这两者的不同。例如void fun(int a,int b);
这个函数在C++和C编译后的符号是不同的,C++经过编译器编译后所产生的符号为_fun_int_int,而C语言在编译器编译过后所产生的符号为_fun。从上面可以看出C++是根据函数名和参数列表来确认一个函数的与返回值没有关系,而当函数名相同参数列表不同的两个函数对C++来说是不同的两个函数。

举例说明重载的实现:

class A{
public:
  void Fun(int i);            
  void Fun(double i);         //可以
  void Fun(int i, double j);  //可以
  void Fun(double i, int j);  //可以
  int Fun(int i);             //不可以
};

上面的代码中第2、3、4都可以实现重载但最后一个不可以,因为C++不会根据返回值类型来确认一个函数。

二、覆盖

所谓的覆盖(重写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值