2️⃣Implementazione polimorfismo [12]

Si descrivano i meccanismi di implementazione del polimorfismo nel C++, considerando anche il caso di costruttori e distruttori. (9 punti)

Risposta 1

I metodi di implementazione del polimorfismo sono:

  • overloading: è usato per chiamare metodi e funzioni con lo stesso nome, ma con parametri formali (eventualmente anche formato di risposta) diversi.

int foo(int a + int b){
  return a+b;
}

int foo(int a + int b + int c){
  return a+b+c;
}
  • override: usato insieme al virtual, per sovrascrivere metodi predisposti da classi madri.

class fooMothef {
  public:
    virtual void dosomething()=0;
}

class fooChild : public fooMother {
  public:
    dosomething() override = ...;
}
  • sub-typing: è un concetto fondamentale dell'ereditarietà, in quanto una classe Dog può essere usata in qualsiasi può essere utilizzato ovunque sia previsto un oggetto Animal

class Animale {
public:
  virtual void verso() = 0;
};

class Cane : public Animale {
public:
  void verso() override {
    std::cout << "Bau!" << std::endl;
  }
};

class Gatto : public Animale {
public:
  void verso() override {
    std::cout << "Miao!" << std::endl;
  }
};

int main() {
  Cane cane;
  Gatto gatto;

  Animale* animali[2] = {&cane, &gatto};

  for (int i = 0; i < 2; ++i) {
    animali[i]->verso();
  }

Un metodo virtuale può essere statico? Motivare la risposta. (3 punti)

Risposta 2

Un metodo virtuale non può essere statico in quanto sono due scelte completamente opposte.

Last updated