【 基类和派生类之间的同名函数处理方式】
class A
{
public:
void fn()
{}
void fn(int a)
{}
};
class B : public A
{
public:
void fn()
{}
};
int main()
{
B b;
b.fn(3); // 编译失败,编译器会报怨,B中,并不存在fn(int)的函数)。
return 0;
}
这里涉及到一个C++中的重要的知识点。即:同名函数的重载动作,只发生在自由函数(即非成员),及同一个class/struct内部的函数之间。而不能跨越基类和派生类。当派生类写一个和基类同名(无论参数列表相同或不相同)的函数时,此时发生的动作叫”覆盖”。覆盖的意思,就是基类的同名函数,在派生类内,将变得无法直接调用(但可以间接调用)。
参考:
1、https://blog.csdn.net/jinvmen/article/details/48311445
Original: https://www.cnblogs.com/tekkaman/p/10323148.html
Author: Tekkaman
Title: 基类和派生类之间的同名函数处理方式
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/549238/
转载文章受原作者版权保护。转载请注明原作者出处!