Претоварване на функции в C ++: Всичко, което трябва да знаете



Тази статия ще ви предостави подробни и изчерпателни знания за претоварване на функции в C ++ с много примери, които да разберете.

C ++ е един от онези езици за програмиране, който е много гъвкав и също така обхваща няколко характеристики на обектно-ориентираното програмиране. Претоварването е друга характеристика на този език за програмиране.Следващите указатели ще бъдат разгледани в тази статия „Претоварване на функциите в C ++“ -

Претоварване на C ++

Когато създаваме два или повече членове на клас със същото име, но различни по брой или тип параметри, това е известно като претоварване на C ++. В C ++ можем да претоварим:





  • методи,
  • конструктори и
  • индексирани свойства

Видове претоварване в C ++

types-of-overloading-in-c++

Какво представлява претоварването на функциите в C ++?

Претоварването на функциите в C ++ може да бъде дефинирано като процес на наличие на две или повече функции-членове на клас със същото име, но различни по параметри. При претоварване на функцията, функцията може да бъде предефинирана или чрез използване на различни видове аргументи, или различен брой аргументи според изискването. Само чрез тези разлики компилаторът може да прави разлика между двете претоварени функции.



Едно от основните предимства на претоварването на функциите е, че увеличава четливостта на програмата, защото не е необходимо да използваме различни имена за едно и също действие отново и отново.

Чрез промяна на броя на аргументите

По този начин на претоварване на функцията дефинираме две функции с еднакви имена, но различен брой параметри от един и същи тип. Например в посочената по-долу програма сме направили две функции add (), за да върнем сумата от две и три цели числа.

как да използвам итератор
// първа дефиниция на функция int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Тук се казва, че функцията add () е претоварена, тъй като има две дефиниции, една, която приема два аргумента, и друга, която приема три аргумента. Коя функция add () ще бъде извикана, зависи от броя на аргументите.



int main () {add (10, 20) // add () с 2 параметър ще бъде извикан add (10, 20, 30) // sum () с 3 параметър ще бъде извикан}
#include използвайки пространство от имена std int add (int a, int b) {cout<< a+b <

В горния пример претоварваме функцията add (), като променяме нейния брой аргументи. Първо, дефинираме функцията add () с два параметъра, след това я претоварваме, като отново дефинираме функцията add (), но този път с три параметъра.

Като има различни видове аргументи

В този метод дефинираме две или повече функции с едно и също име и еднакъв брой параметри, но използваният тип данни за тези параметри е различен. Например в тази програма имаме три функция add (), първата получава два целочислени аргумента, втората получава два плаващи аргумента, а третата получава два двойни аргумента.

#include използвайки пространство от имена std int add (int x, int y) // първа дефиниция {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

В горния пример дефинираме функцията add () три пъти. Първо използвайте цели числа като параметри, второ използвайте float като параметри и трето използвайте double като параметър.
По този начин ние заместваме функцията add () два пъти.

как да създадете сингълтон клас в java -

Предимства на функцията Претоварване в C ++

  • Използваме претоварване на функциите, за да спестим място в паметта, последователност и четливост на нашата програма.

  • С концепцията за претоварване на функцията за използване можем да разработим повече от една функция със същото име

  • Претоварването на функцията показва поведението на полиморфизма, което ни позволява да получим различно поведение, въпреки че ще има някаква връзка, използваща същото име на функцията.

  • Претоварването на функциите ускорява изпълнението на програмата.

  • Претоварването на функцията се използва за повторна употреба на кода, а също и за спестяване на памет.

  • Помага на приложението да зареди метода на класа въз основа на вида на параметъра.

  • Поддръжката на кода е лесна.

Недостатъци на функцията Претоварване в C ++

  • Декларациите за функции, които се различават само по своя тип на връщане, не могат да бъдат претоварени с процеса на претоварване на функцията.
  • Декларациите на функции на членове със същите параметри или същите типове имена не могат да бъдат претоварени, ако някой от тях е деклариран като статична функция на член.
  • клас XYZ {static void func () void func () // грешка}

Претоварване на функцията и неяснота

Когато компилаторът не може да реши коя функция да извика първо сред претоварените функции, тази ситуация е известна като неяснота на претоварване на функцията. Компилаторът не изпълнява програмата, ако показва грешка в неяснотата. Причини за неяснота на претоварване на функциите:

  • Преобразуване на тип.
  • Функция с аргументи по подразбиране.
  • Функция с преминаване чрез препратка

Преобразуване на тип:

#include използвайки пространство от имена std void функция (float) void функция (int) void функция (float x) {std :: cout<< 'Value of x is : ' <

Горният пример извежда грешка - „повикването на претоварена‘ функция (двойно) ’е двусмислено”. Функцията (3.4) ще извика първата функция. Функцията (34) извиква втората функция според нашето предвиждане. Но това не се случва, защото в C ++ всички константи с плаваща запетая се третират като двойни, а не като плаващи. Ако заменим променливата float с двойна променлива, програмата ще работи добре. Следователно ние наричаме това грешка при преобразуване на тип от float към double.

Функция с аргументи по подразбиране:

#include използвайки пространство от имена std void функция (int) void функция (int, int) void функция (int x) {std :: cout<< 'Value of x is : ' <

Горният пример дава грешка, казвайки „повикването на претоварено„ забавление (int) “е двусмислено“, това е така, защото функцията (int y, int z = 12) може да бъде извикана по два начина:

  1. Чрез извикване на функцията с един аргумент (и тя автоматично ще приеме стойността на z = 12)
  2. Чрез извикване на функцията с два аргумента.

Когато извикаме функцията: function (12), ние попълваме изцяло условието както на функция (int), така и на функция (int, int), като по този начин компилаторът попада в неяснота и показва грешка.

Функция с предаване чрез препратка

как да разположим Java приложението в aws -
#include използвайки пространство от имена std void функция (int) void функция (int &) void функция (int a) {std :: cout<< 'Value of a is : ' < 

Горната програма дава грешка, като казва, че „повикването на претовареното„ забавление (int &) “е двусмислено“. Както виждаме, първата функция приема един целочислен аргумент, а втората функция взема референтен параметър като аргумент. В този случай компилаторът не може да разбере коя функция е необходима на потребителя, тъй като няма синтактична разлика между забавлението (int) и забавлението (int &), като по този начин изстрелва грешка от неяснота.

С това стигаме до края на това претоварване на функции в C ++. Ако искате да научите повече, разгледайте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.