Надјачавање функције Ц ++

C Function Overriding



У овом чланку ћемо обрадити надјачавање функција у програмском језику Ц ++. Ц ++ подржава полиморфизам током извођења.

У надјачавању функције, подређена класа редефинише функцију која је већ дефинисана у својој родитељској класи.







Омогућава програмеру да обезбеди изведене функције специфичне за класу (иако је дефинисана у основној класи).



Сада ћемо видети неколико примера и разумети концепт надјачавања функција у Ц ++.



Пример-1

У доњем примеру кода сам дефинисао две класе - основну класу и изведену класу. Основна класа има функцију члана, тј. Дисп (). Деривед_Цласс је наслеђен од Басе_Цласс. Функција дисп () је присутна у Басе_Цласс -у, а затим редефинисана у Деривед_Цласс -у.





У функцији маин () креира се објекат Деривед_Цласс, тј. Д. Затим, позивамо функцију дисп () на објекту изведене класе, па ће се позвати функција у изведеној класи. Овде се занемарује верзија основне класе. Испод можете видети излаз као - дисп () функцију у изведеној класи.

#инцлуде

користећи именски простор стд;

// основна класа
цласс Басе_Цласс
{
јавности:
празнинакористити()
{
цена<< 'дисп () функција у основној класи.' <<ендл;
}

};

// изведена класа
цласс Деривед_Цласс:публиц Басе_Цласс
{
јавности:
празнинакористити()
{
цена<< 'дисп () функција у изведеној класи' <<ендл;
}
};

интглавни()
{
Изведена_разред д;
д.користити(); // дисп () функција на изведеном објекту класе
повратак 0;
}



Пример-2

У овом примеру видећемо како намерно позвати верзију функције основне класе преко изведеног објекта класе. У изведеној дефиницији функције класе, користимо оператор резолуције опсега [::] за позивање верзије функције основне класе.

#инцлуде

користећи именски простор стд;

цласс Басе_Цласс
{
јавности:
празнинакористити()
{
цена<< 'дисп () функција у основној класи.' <<ендл;
}

};

цласс Деривед_Цласс:публиц Басе_Цласс
{
јавности:
празнинакористити()
{
Басе_Цласс::користити(); // Позовите верзију основне класе дисп ()
}
};

интглавни()
{
Изведена_разред д;
д.користити();
повратак 0;
}

Пример-3

Ово је још један пример замене функције. У овом примеру смо креирали родитељску класу - Анимал и две изведене класе - Дуцк анд Дог. Основна класа, тј. Класа Анимал, има функцију -функцију соунд ().

У изведеној класи класа/дете, тј. Дог, редефинисали смо исту функцију, тј. Звук (), да бисмо заменили дефиницију њене основне класе. Слично, у другој изведеној класи, тј. Дуцк -у, редефинисали смо исту функцију, тј. Соунд ().

У функцији маин () створили смо псећи објекат Дог анд дуцк оф Дуцк. Дакле, сада када позовемо функцију соунд () за пса и патку, позваће се верзија изведене класе функције соунд (). Можете видети излаз програма као што је приказано испод. Дакле, уз помоћ надјачавања функције, можемо позвати изведену функцију специфичну за класу.

#инцлуде

користећи именски простор стд;

разред Животиња
{
јавности:
празниназвук()
{
цена<< 'Животињски звук!' <<ендл;
}

};

// Изведена класа - Класа паса
разред Пас:јавна Животиња
{
јавности:
празниназвук()
{
цена<< 'Звук пса - лавеж.' <<ендл;
}
};

// Изведена класа - Класа патке
класа Патка:јавна Животиња
{
јавности:
празниназвук()
{
цена<< 'Звук патке - штребер.' <<ендл;
}
};


интглавни()
{
Пас пас;
Патка патка;

пас.звук(); // звук () пса
патка.звук(); // звук () патке

повратак 0;
}

Закључак

У овом чланку сам објаснио премошћивање функције Ц ++ . Језик Ц ++ подржава полиморфизам током извођења. Надјачавање функција помаже у постизању полиморфизма времена извођења у Ц ++. Овај чланак је разматрао концепт надјачавања функције и како постићи полиморфизам током извођења помоћу замене функција.