我对这两个术语感到有些困惑,并且很乐意澄清一些疑问.
据我所知,function overloading意味着在同一个类中具有多个方法,这些方法具有相同的名称但是具有不同数量的参数,不同类型的参数或参数序列,而不管返回类型如何对函数的错位名称没有影响.
上述定义是否还包括"....在同一个类或相关类中(通过继承相关)......"
并且Function Overriding与虚函数,相同的方法签名(在Base类中声明为虚拟)和在子类中实现的重写有关.
我想知道一个场景,以下是代码:
#include <iostream>
class A
{
public:
void doSomething(int i, int j)
{
cout<<"\nInside A::doSomething\n";
}
};
class B: public A
{
public:
void doSomething(int i, int j)
{
cout<<"\nInside B::doSomething\n";
}
};
int main()
{
B obj;
obj.doSomething(1,2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上述情况下,什么可以说:
在派生类的方法,overrides在基类的方法OR
中派生类的方法,overloads在基类的方法
重载是否适用于类范围,并且覆盖术语是否不一定适用于虚函数?
我认为它应该是overrides,但只需要澄清,因为我碰巧记得术语覆盖被特别用于虚函数.