Ц ++

Преоптерећење функције Ц ++

Преоптерећење функције Ц ++

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

Шта је функција?

Функција није ништа друго него одређени комад кода који извршава одређени задатак на основу пружених улаза, а кориснику враћа тражене резултате у облику излаза. Функције се користе за уклањање понављајућег кода у великим базама кодова.

Након дефинисања функције, можете је касније поново користити, било у истом програму или у другом програму.

Синтакса функције

Функција на Ц ++ има следећу синтаксу:

ретурнТипе фунцтионНаме (параметар_лист)



ретурн ретурн_валуе;

РетурнТипе, параметар_лист и ретурн наредба нису обавезни. Функција на Ц ++ може да врати највише једну вредност. Ако функција не врати ниједну вриједност, ретурнТипе треба дефинирати као воид.

Шта је преоптерећење функције?

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

Функције се могу преоптеретити на следеће начине:

  1. Број параметара може бити различит
  2. Тип података параметара може бити различит
  3. Редослед параметара може бити различит

Међутим, повратна вриједност се не узима у обзир код преоптерећења функције. 

Следеће функције су преоптерећене:

  1. додавање инт (инт а, инт б)
  2. додатак пловка (пловак ф, глоат г)
  3. додавање флоат-а (флоат ф, инт и)
  4. додавање флоат-а (инт и, флоат ф)
  5. додавање инт (инт а, инт б, инт ц)
  6. додатак плутајућег слова (флоат ф, флоат г, флоат х)

Као што видите, уз помоћ функције преоптерећења функције у Ц ++-у може постојати више дефиниција / функционалности са истим именом функције и у истом опсегу.

Без функције преоптерећења функције, требало би да напишете засебну функцију [на пример, додавање_1 (), додавање_2 () итд.) За сваку варијацију. На пример, можда ћете морати да напишете додатак_1 () да бисте додали две целобројне вредности, додатак_2 () да бисте додали два пловка и тако даље. Међутим, као што видите горе, функција преоптерећења функције може се користити за дефинисање више варијација функције „аддитион ()“, а да се при томе задржи исто име функције.

Следеће функције се не сматрају преоптерећенима, јер једина разлика између ове две је тип повратка (тип повратка се не узима у обзир за преоптерећење функција у Ц ++):

  1. додавање инт (инт а, инт б)
  2. додавање плутајућег слова (инт а, инт б)

Примери

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

  1. Пример 1: Једноставна функција
  2. Пример 2: Једноставна функција сабирања
  3. Пример 3: Преоптерећење функције (1)
  4. Пример 4: Преоптерећење функције (2)
  5. Пример 5: Преоптерећење функције (3)

Прва два примера објашњавају како нормалне функције функционишу у Ц ++, док последња три примера показују функцију преоптерећења функције у Ц-у++.

Пример 1: Једноставна функција

У овом примеру ћемо показати како се једноставна функција може дефинисати и позвати у Ц++. Дефинисаћемо класу која се зове „Дисплаи“ и јавну функцију која се зове „дисплаи ().”Из функције“ маин () ”позваћемо функцију“ дисплаи () ”уз помоћ објекта класе“ Дисплаи ”(д).

#инцлуде
коришћење простора имена стд;
разред Дисплаи

јавно:
приказ празнине ()

цоут << "Hello World!" << endl;

;
инт маин ()

Дисплаи д;
д.приказ();
ретурн 0;

Пример 2: Једноставна функција сабирања

У овом примеру ћемо показати како да дефинишемо једноставну функцију „сабирање ()“ у језику Ц++. Дефинисаћемо класу под називом „ДемоАдд“ и јавну функцију која се зове „адд ().”Из функције“ маин () ”позваћемо функцију“ адд () ”уз помоћ објекта класе“ ДемоАдд ”(д).

У овом примеру, тренутна имплементација функције „адд ()“ прихвата само два целобројна параметра. То значи да је тренутна функција „адд ()“ у стању да дода само две целобројне вредности.

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

#инцлуде
коришћење простора имена стд;
разред ДемоАдд

јавно:
додавање инт (инт а, инт б)

инт резултат;
резултат = а + б;
повратни резултат;

;
инт маин ()

ДемоАдд д;
инт и1 = 10, и2 = 20, рес;
рес = д.сабирање (и1, и2);
цоут << "Result = " << res << endl;
ретурн 0;

Пример 3: Преоптерећење функције (1)

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

Без функције преоптерећења функције, морали бисмо да напишемо другу функцију са другим именом.

#инцлуде
коришћење простора имена стд;
разред ДемоАдд

јавно:
// Прва дефиниција функције сабирања ()
додавање инт (инт а, инт б)

инт резултат;
резултат = а + б;
повратни резултат;

// Преоптерећена верзија функције адд ()
додавање инт (инт а, инт б, инт ц)

инт резултат;
резултат = а + б + ц;
повратни резултат;

;
инт маин ()

ДемоАдд д;
инт и1 = 10, и2 = 20, и3 = 30, рес1, рес2;
рес1 = д.сабирање (и1, и2); // додавање () са 2 параметра
рес2 = д.сабирање (и1, и2, и3); // додавање () са 3 параметра
цоут << "Result = " << res1 << endl;
цоут << "Result = " << res2 << endl;
ретурн 0;

Пример 4: Преоптерећење функције (2)

У ранијим одељцима овог чланка сазнали сте да се преоптерећење функције може извршити на основу разлика у типу параметра. Овде смо преоптеретили функцију „адд ()“ на основу типа података параметра. У првој верзији функције сабирања додаћемо две променљиве целобројног типа; а у другој верзији ћемо додати две променљиве типа флоат.

#инцлуде
коришћење простора имена стд;
разред ДемоАдд

јавно:
// Прва дефиниција сабирања ()
додавање инт (инт а, инт б)

инт резултат;
резултат = а + б;
повратни резултат;

// Дефиниција преоптерећене функције
додатак пловка (флоат ф, флоат г)

резултат плутања;
резултат = ф + г;
повратни резултат;

;
инт маин ()

ДемоАдд д;
инт и1 = 10, и2 = 20, рес1;
флоат ф1 = 10.5, ф2 = 20.7, рес2;
рес1 = д.сабирање (и1, и2); // зваће се додавање (инт а, инт б)
рес2 = д.сабирање (ф1, ф2); // зваће се сабирање (флоат ф, флат г)
цоут << "Result = " << res1 << endl;
цоут << "Result = " << res2 << endl;
ретурн 0;

Пример 5: Преоптерећење функције (3)

У овом примеру, функција „адд ()“ је преоптерећена на основу разлика у низу листе параметара. Ово је још један начин за преоптерећење функције у Ц++.

#инцлуде
коришћење простора имена стд;
разред ДемоАдд

јавно:
// Прва дефиниција функције додавања () функције
додавање флоат-а (инт а, флоат б)

резултат плутања;
резултат = (плутајуће) а + б;
повратни резултат;

// Преоптерећена дефиниција функције додавања () функције
додавање флоат-а (флоат а, инт б)

резултат плутања;
резултат = а + (плутајуће) б;
повратни резултат;

;
инт маин ()

ДемоАдд д;
инт и1 = 10;
флоат ф1 = 10.5, рес1, рес2;
рес1 = д.сабирање (и1, ф1); // зваће се додавање (инт а, флоат б)
рес2 = д.сабирање (ф1, и1); // зваће се додавање (флоат а, инт б)
цоут << "Result = " << res1 << endl;
цоут << "Result = " << res2 << endl;
ретурн 0;

Закључак

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

Средњи тастер миша не ради у оперативном систему Виндовс 10
Тхе средње дугме миша помаже вам да се крећете кроз дугачке веб странице и екране са пуно података. Ако се то заустави, на крају ћете користити тастат...
Како да промените леви и десни тастер миша на рачунару са Виндовс 10
Сасвим је нормално да су сви уређаји рачунарског миша ергономски дизајнирани за дешњаке. Али постоје доступни уређаји за миш који су посебно дизајнира...
Емулирајте кликове мишем лебдењем помоћу миша без клика у оперативном систему Виндовс 10
Коришћење миша или тастатуре у погрешном положају прекомерне употребе може резултирати многим здравственим проблемима, укључујући напрезање, синдром к...