Table of Contents

Partie II – Constructeurs en C++

TD1

Question n° 1

Nous considérons les deux fonctions suivantes (C++):

void myfunctionA()
{
  MyCounter counter;
  std::cout << counter.getCounter() << std::endl;
  std::cout << counter.getMax() << std::endl;
}
 
void myfunctionB() 
{
  MyCounter* counter = new MyCounter();
  std::cout << counter->getCounter() << std::endl;
  std::cout << counter->getMax() << std::endl;
  delete counter;
}

Exécuter les deux fonctions et expliquer pourquoi la valeur des champs est différente dans le cas où les objets sont alloués sur la pile ou dans le cas où sont alloués sur le tas.

Question n° 2

Que faut-il ajouter à la classe pour garantir que le comportement soit toujours correct ?

Question n° 3

Dans la fonction useObjectA(), le programme initialise les différents champs des compteurs. Ceci n’est pas très élégant.

Proposer une solution pour créer des compteurs en passant en paramètre le nombre maximal d’éléments comptés à partir duquel le compteur revient à 0.

Simplifier le code de la fonction useObjectA() une fois que vous avez proposé ces solutions.

Question n° 4

Proposer enfin un constructeur de recopie qui permet de créer un nouveau compteur étant la copie d’un compteur passé en paramètre.