Я немного запутался в двух терминологиях и был бы рад получить некоторые сомнения, разъясненные.
Как я понимаю function overloading
означает наличие нескольких методов в одном классе с одним и тем же именем, но с разным количеством аргументов, разными типами аргументов или последовательностью аргументов, независимо от типа возврата, который не влияет на искаженное имя функции.
В приведенном выше определении также содержится ".... в том же классе или через связанные классы (связанные через наследование)....."
И Function Overriding
связан с виртуальными функциями, одинаковой сигнатурой метода (объявлен виртуальной в базовом классе) и переопределен для реализации в подклассах.
Мне было интересно, сценарий, следующий код:
#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;
}
В приведенном выше сценарии, что можно сказать:
Метод в методе производного класса overrides
в базовом классе OR
Метод в методе производного класса overloads
в базовом классе
Используется ли перегрузка в классах классов, а переопределяющий термин не обязательно применим к виртуальным функциям?
Я думаю, что это должно быть overrides
, но просто нужно разъяснение, потому что я помню, что термин переопределение используется конкретно с виртуальными функциями.