Skip to content

Commit

Permalink
Add polymorphism exercices
Browse files Browse the repository at this point in the history
  • Loading branch information
tony-maulaz committed Mar 29, 2022
1 parent 27fb48d commit 2ca8536
Showing 1 changed file with 69 additions and 1 deletion.
70 changes: 69 additions & 1 deletion ex70-polymorphism.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,72 @@ int main()
Animal* a = new Dog();
a->speak();
}
```
```

# Ex 2

Créer la classe manquante afin de rendre le code exécutable.

```CPP
#include <iostream>
using namespace std;

// ???

struct Circle : public Shape{
void draw() override{
cout << "Drawing a circle" << endl;
}
};

struct Square : public Shape{
void draw() override{
cout << "Drawing a square" << endl;
}
};

int main()
{
Shape* s = new Circle();
s->draw();
s = new Square();
s->draw();
}
```

# Ex 3

Quelle est la différence entre une méthode virtuelle et une méthode virtuelle pure ?

# Ex 4

- Quel est le problème du code suivant ?
- Comment le rendre exécutable ?

```CPP
#include <iostream>
using namespace std;

class Human{
public:
virtual void speak() = 0;
};

struct Child : public Human{
void speak() override{
cout << "Hello" << endl;
}
};

int main()
{
Human* h = new Human();
h->speak();
}
```

# Ex 5

Reprendre l'exercice `Person` et modifier la classe `School` pour avoir un tableau de `Person`.
La méthode `printList` de la classe `School` doit afficher la liste des personnes, et appeler la méthode `printInfos` de chaque personne.
Il est impossible de créer une personne.

0 comments on commit 2ca8536

Please sign in to comment.