Я немного смущен двумя терминологиями и был бы рад прояснить некоторые сомнения.
Как я понимаю, 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
Метод в базовом классе ИЛИ
Метод в производном классе overloads
Метод в базовом классе
Применима ли перегрузка к областям действия классов, и переопределение не обязательно относится к виртуальным функциям?
Я думаю, что это должно быть overrides
, но мне просто нужно пояснение, потому что я вспомнил, что термин переопределение использовался специально с виртуальными функциями.