У надјачавању функције, подређена класа редефинише функцију која је већ дефинисана у својој родитељској класи.
Омогућава програмеру да обезбеди изведене функције специфичне за класу (иако је дефинисана у основној класи).
Сада ћемо видети неколико примера и разумети концепт надјачавања функција у Ц ++.
Пример-1
У доњем примеру кода сам дефинисао две класе - основну класу и изведену класу. Основна класа има функцију члана, тј. Дисп (). Деривед_Цласс је наслеђен од Басе_Цласс. Функција дисп () је присутна у Басе_Цласс -у, а затим редефинисана у Деривед_Цласс -у.
У функцији маин () креира се објекат Деривед_Цласс, тј. Д. Затим, позивамо функцију дисп () на објекту изведене класе, па ће се позвати функција у изведеној класи. Овде се занемарује верзија основне класе. Испод можете видети излаз као - дисп () функцију у изведеној класи.
#инцлудекористећи именски простор стд;
// основна класа
цласс Басе_Цласс
{
јавности:
празнинакористити()
{
цена<< 'дисп () функција у основној класи.' <<ендл;
}
};
// изведена класа
цласс Деривед_Цласс:публиц Басе_Цласс
{
јавности:
празнинакористити()
{
цена<< 'дисп () функција у изведеној класи' <<ендл;
}
};
интглавни()
{
Изведена_разред д;
д.користити(); // дисп () функција на изведеном објекту класе
повратак 0;
}
Пример-2
У овом примеру видећемо како намерно позвати верзију функције основне класе преко изведеног објекта класе. У изведеној дефиницији функције класе, користимо оператор резолуције опсега [::] за позивање верзије функције основне класе.
#инцлудекористећи именски простор стд;
цласс Басе_Цласс
{
јавности:
празнинакористити()
{
цена<< 'дисп () функција у основној класи.' <<ендл;
}
};
цласс Деривед_Цласс:публиц Басе_Цласс
{
јавности:
празнинакористити()
{
Басе_Цласс::користити(); // Позовите верзију основне класе дисп ()
}
};
интглавни()
{
Изведена_разред д;
д.користити();
повратак 0;
}
Пример-3
Ово је још један пример замене функције. У овом примеру смо креирали родитељску класу - Анимал и две изведене класе - Дуцк анд Дог. Основна класа, тј. Класа Анимал, има функцију -функцију соунд ().
У изведеној класи класа/дете, тј. Дог, редефинисали смо исту функцију, тј. Звук (), да бисмо заменили дефиницију њене основне класе. Слично, у другој изведеној класи, тј. Дуцк -у, редефинисали смо исту функцију, тј. Соунд ().
У функцији маин () створили смо псећи објекат Дог анд дуцк оф Дуцк. Дакле, сада када позовемо функцију соунд () за пса и патку, позваће се верзија изведене класе функције соунд (). Можете видети излаз програма као што је приказано испод. Дакле, уз помоћ надјачавања функције, можемо позвати изведену функцију специфичну за класу.
#инцлудекористећи именски простор стд;
разред Животиња
{
јавности:
празниназвук()
{
цена<< 'Животињски звук!' <<ендл;
}
};
// Изведена класа - Класа паса
разред Пас:јавна Животиња
{
јавности:
празниназвук()
{
цена<< 'Звук пса - лавеж.' <<ендл;
}
};
// Изведена класа - Класа патке
класа Патка:јавна Животиња
{
јавности:
празниназвук()
{
цена<< 'Звук патке - штребер.' <<ендл;
}
};
интглавни()
{
Пас пас;
Патка патка;
пас.звук(); // звук () пса
патка.звук(); // звук () патке
повратак 0;
}
Закључак
У овом чланку сам објаснио премошћивање функције Ц ++ . Језик Ц ++ подржава полиморфизам током извођења. Надјачавање функција помаже у постизању полиморфизма времена извођења у Ц ++. Овај чланак је разматрао концепт надјачавања функције и како постићи полиморфизам током извођења помоћу замене функција.