天天看点

2012年C++专家进阶之二总结

2012年C++专家进阶之二

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

序号

区别项

重载

覆盖

隐藏

1

含义

无此一说

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

派生类函数覆盖基类函数

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

2

范围

相同范围

不同的范围

3

都在同一个类中

分别位于派生类与基类

4

参数

不同

相同

无所谓

5

Virtual关键字

无所谓,也就是可有可无

必须有

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

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

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

6

作用

派生类函数隐藏基类函数

if(函数名称相同)

{

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

     {

          if(参数不相同)//

         {

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

        }

    }

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

   {

         if(参数相同)

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

               {

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

              }

             else

              {

                  printf(“这就叫隐藏”);

              }

          }

          else

          {

               printf(“这就叫隐藏”);

   } 

}

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

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

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

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

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

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

如果您跟人家讲不清这3个概念,就写一段代码吧!代码就是我们的沟通交流的语言。他懂的!!!!!

继续阅读