2012年C++专家进阶之二

2012C++专家进阶之二

一、      类成员函数的重载、覆盖和隐藏的区别

相同点:都是函数名字相同

序号

区别项

重载

覆盖

隐藏

1

含义

无此一说

主要方便编写代码,函数可以重名

派生类函数覆盖基类函数

指派生类的函数屏蔽了与其同名的基类函数

2

范围

相同范围

不同的范围

不同的范围

3

都在同一个类中

分别位于派生类与基类

分别位于派生类与基类

4

参数

不同

相同

无所谓

5

Virtual关键字

无所谓,也就是可有可无

必须有

并且是基类函数必须有virtual关键字

1.参数不相同,不论基类函数有无virtual关键,基类的函数将被隐藏

2.参数相同,但是基类函数没有virtual关键字,基类的函数被隐藏

6

作用

派生类函数覆盖基类函数

派生类函数隐藏基类函数

程序代码,清晰解读这3个极易混淆的概念:

if(函数名称相同)

{

     if(同一个类中)  //范围相同

     {

          if(参数不相同)//

         {

            printf(“这就是重载的概念”);//

        }

    }

    else if(一个派生类 && 一个是基类) // 分属两个不同的类

   {

         if(参数相同)

         {

                if(基类函数有关键字virtual)

               {

                  printf(“这就是覆盖的概念”); 

              }

             else

              {

                  printf(“这就叫隐藏”);

              }

          }

          else

          {

               printf(“这就叫隐藏”);

          }

   } 

}

总结

1.重载、覆盖、隐藏是3个概念;

2.满足哪些具体的条件,才能叫重载、覆盖或者隐藏呢;

3.覆盖与隐藏的本质,就是基类函数不工作,工作的是派生类函数;

4.重载是针对一个类而言的概念,参数必须不同;

5.覆盖是针对基类、派生类而言,也就是有继承关系的类而言,并且必须带virtual关键字,参数要相同;

6隐藏是针对基类、派生类而言,也就是有继承关系的类而言,只要不是覆盖,必然是隐藏;

如果您跟人家讲不清这3个概念,就写一段代码吧!代码就是我们的沟通交流的语言。他懂的!!!!!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletigerat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值