Skip to main content

Mi a funkció túlterhelése?

A funkció túlterhelése számos programozási nyelv jellemzője, ahol több módszert lehet létrehozni ugyanazzal a névvel, de különböző bemeneti paraméterekkel vagy visszatérési típusokkal.Ez az objektum-orientált programozás általános jellemzője;Különösen a konstruktoroknak több különböző túlterhelt változata lehet.Alapvetően a funkció túlterhelése akkor hasznos, ha két funkció nagyon hasonló dolgokat végez, és ehhez többféle bemenetet is igénybe vehet.A konstruktorok könnyen túlterhelhetők, mivel nincsenek kifejezett visszatérési típusuk, így a konstruktor bemeneti paramétereinek egyszerű megváltoztatása érvényes túlterhelés lenne.Például megfontolhatjuk az ADD nevű függvényt, amely két egész számot ad be.Ennek a funkciónak a célja meglehetősen nyilvánvaló;Ennek célja két egész szám összegének megtalálása.

Ha valaki két úszó vagy tizedes szám összegét szeretné megtalálni, akkor ez a funkció nem lenne alkalmazható.Tehát egy második túlterhelt funkcióra van szükség, amelyet egy addnak nevezett függvényként definiálnak, amely két úszóként veszi be.A funkciók lényegében ugyanazt teszik, de a funkció túlterhelésére szükség van, mivel bemeneteik jelentősen különböznek.Az előző példa felhasználásával mérlegelhető, ha mindkét túlterhelt hozzáadási funkció érvénytelen visszatérési típusú;Vagyis nem tértek vissza semmit.Ez továbbra is érvényes lenne a funkció túlterhelése, de a két módszer visszatérési típusai is megváltoztathatók.A túlterhelés egy másik érvényes példányában a két egész számot igénylő hozzáadási függvény visszaadhatja az egész szám összeget, és az ADD funkció, amely két tizedes számot vesz igénybe, visszaadhatja ezt a tizedes számot.

Egyszerűen megváltoztathatja a függvény visszatérési típusát, nem tekintik érvényes funkció túlterhelésének.Csak a függvény visszatérési típusa megváltoztatása kétértelműséget eredményez, mivel a módszer aláírásából nem egyértelmű, hogy mely visszatérési típus kívánatos.A paraméterek kétértelműen is meghatározhatók, tehát nagyon fontos, hogy a túlterhelt funkciókat megfelelően lehessen hívni.Például, ha az egyiknek van egy túlterhelt funkciója, amelynek teljes száma van bemeneti paraméterként, a másik pedig paraméterként egy decimális számmal, akkor nagyon könnyű lenne, ha valaki véletlenül hívja a tizedes szám funkciót a teljes számfüggvény helyett, vagy fordítva, mert ugyanaz a nevük van.Az ilyen kétértelmű paramétereket el kell kerülni, ha lehetséges, és ha nem lehetnek, akkor nagy gondot kell fordítani annak biztosítása érdekében, hogy a megfelelő túlterhelt funkciót a megfelelő időpontokban hívják meg., és sok rugalmasságot ad a kódnak.A túlterhelt funkciók végső megfontolása az, hogy a megfelelő kommentálás elengedhetetlen.Noha az eltérő bemeneti paraméterekkel egyértelmű lehet, hogy a túlterhelt funkció melyik verziója megfelelő egy adott helyzethez, lehet, hogy nem mindig egyértelmű, hogy a funkció milyen eltérően, mint a többi túlterhelt partner.