Возьмите пример ниже. Какой термин вы используете для описания наследуемого класса с параметрами, отличными от базового класса? Я это понимаю subbase
неявно зовет base()
, Вы бы не назвали это переопределением, правильно, так как базовый конструктор все еще вызывается?
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
class base
{
public:
base()
{
cout << "Hello!\n";
}
};
class subbase : public base
{
public:
subbase(string s)
{
cout << s << endl;
}
};
int main()
{
subbase test("Hello World!\n");
return 0;
}
Перегружен мой друг. У него такое же имя метода, но другой параметр или тип возвращаемого значения
Но в этом случае вы просто создаете новый конструктор. Не действительно наследование или что-нибудь.
Перегрузка: при изменении подписи унаследованных функций в производном классе.
Переопределение (в случае нормальных функций) / Переопределение (в случае виртуальных функций): когда вы сохраняете сигнатуру функций базового класса в производном классе. Но вы меняете часть реализации.
Но я не говорю о Конструкторах здесь. Я говорю об обычных членских функциях класса.