Sobes.tech
Junior

Šta je preopterećenje i prepisivanje metoda u C++?

sobes.tech АИ

Одговор од АИ

Preopterećenje metoda (Method Overloading):

  • Omogućava imati više metoda sa istim imenom u istoj klasi.
  • Razlikuju se po potpisu (broju i/ili tipu parametara).
  • Tip povratne vrednosti ne učestvuje u definiciji potpisa za preopterećenje.
  • Izbor konkretne metode određuje kompajler na osnovu tipova argumenata tokom poziva (statičko povezivanje).
class MyClass {
public:
    void print(int a) {
        // Štampanje celog broja
    }

    void print(double d) {
        // Štampanje broja sa pokretnom zarezom
    }

    void print(int a, int b) {
        // Štampanje dva cela broja
    }
};

Preopterećenje metoda (Method Overriding):

  • Omogućava klasi koja nasleđuje da pruži specifičnu implementaciju metode koja je već definisana u osnovnoj klasi.
  • Metod u klasi koja nasleđuje mora imati isti potpis (ime, broj i tipove parametara) i isti tip povratne vrednosti (ili kovarijantni tip).
  • Koristi se sa virtuelnim funkcijama (virtual) za implementaciju polimorfizma.
  • Izbor konkretne implementacije metode određuje se tokom izvršenja (dinamičko povezivanje), u zavisnosti od stvarnog tipa objekta.
class Base {
public:
    virtual void display() {
        // Implementacija u osnovnoj klasi
    }
};

class Derived : public Base {
public:
    void display() override { // Ključna reč override (od C++11) pomaže da se izbegnu greške
        // Specifična implementacija u izvedenoj klasi
    }
};

Glavne razlike:

Osobina Preopterećenje metoda Preopterećenje (overriding) metoda
Mesto primene U istoj klasi U osnovnoj i izvedenoj klasi
Ime metode Isti Isti
Potpis metode Različit Isti
Mehanizam izbora Statičko povezivanje (kompajliranje) Dinamičko povezivanje (izvršenje)
Koristi se sa Obične funkcije Virtuelne funkcije
Cilj Različite akcije za različite tipove Specifična implementacija u nasledjivanju