在C++中,成员函数的重载、覆盖与隐藏是很容易混淆的概念,一定要搞清楚他们之间的关系与差别。
1、成员函数重载的特性
(1)相同的范围(即在同一个类中)。也就是意味着基类与派生类之间的成员函数不存在重载的关系;
(2)成员函数名字相同,参数不同;
(3)virtual关键字可有可无。
2、覆盖
覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类中);
(2)函数的名字相同,参数也相同;
(3)基类函数必须要有virtual关键字修饰。
3、隐藏
这里的“隐藏”指的是派生类函数屏蔽了基类中与其同名的成员函数,需要与上面的两个概念区别开来:
(1)如果派生类的函数与基类的函数同名,但是参数不同,此时无论基类函数是否有virtual关键字,基类函数
都将被“隐藏”。
(2)如果派生类函数与基类函数同名,并且参数也相同,但是基类函数没有virtual关键字修饰,那么此时
基类函数将被“隐藏”。
这三个关系是非常容易混淆的,一定要注意他们之间的区别、不同之处。
参考博文:http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html
时间: 2024-10-14 15:00:17