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个概念,就写一段代码吧!代码就是我们的沟通交流的语言。他懂的!!!!!