Programare Orientată Obiect
Polimorfism
Polimorfismul permite ca metode cu același nume să se comporte diferit în funcție de tipul obiectului. Se realizează prin suprascrierea (override) metodelor.
polymorphism.cpp
class Forma {
public:
virtual double arie() { return 0; } // virtual!
};
class Dreptunghi : public Forma {
double l, lat;
public:
Dreptunghi(double l, double lat) : l(l), lat(lat) {}
double arie() override { return l * lat; }
};
class Cerc : public Forma {
double r;
public:
Cerc(double r) : r(r) {}
double arie() override { return 3.14159 * r * r; }
};
void afisArie(Forma* f) {
cout << "Aria: " << f->arie() << endl;
}
Dreptunghi d(3, 4);
Cerc c(5);
afisArie(&d); // 12
afisArie(&c); // 78.54