前言
C++经常有重载,覆盖(重写),隐藏(重定义)。这三者区别看我这篇博客:重载、重写(覆盖)、隐藏(重定义)。
这里讲隐藏:隐藏是发生在基类和派生类之间的。如果在派生类中定义了一个与基类同名的函数,不管这个函数的参数列表是不是与基类中的函数相同,则这个同名的函数就会把基类中的所有这个同名的函数的所有重载版本都隐藏了,这时并不是在派生类中重载基类的同名成员函数,而是隐藏。
1 隐藏基类的函数
基于隐藏这种机制,所以看下段代码:
#include <iostream>
using namespace std;
class A {
public:
void fun(int a) { cout << "This Base's fun(int a)" << endl; }
void fun(float a) { cout << "This Base's fun(float a)" << endl; }
void fun(double a) { cout << "This Base's fun(float a)" << endl; }
};
class B : public A{
public:
void fun(int a) { cout << "This Derived's fun(int a)" << endl; }
};
int main()
{
B b;
b.fun(int(11));
b.fun(float(11));
b.fun(double(11));
return 0;
}
结果输出:
297




被折叠的 条评论
为什么被折叠?



