Introduction au langage C++ : C avec des classes

Introduction au langage C++ : C avec des classes

Declaration d’une classe

// Fichier: date.h

class CDate {

public:

// Pour changer la date.

void Change(int jour, int mois, annee);

// Lecture de la date.

int Jour() const; // Note: const

int Mois() const;

int Annee() const;

  • Passe a la date suivante.

voidSuivante();

  • Ecrit la date dans un fichier.

voidEcrit(FILE*);

private:

int jour, mois, annee;

};

Les classes se manipulent a peu pres comme les struct:

struct S {

/* … */

};

class CDate {

/* … */

};

void main()

{

S s;

FILE* fichier;

Cdate date; // « instance » (objet) appartenant // a la classe CDate.

}

Implementation

On utilise la notation

Nom de la Classe::Fonction Membre

pour de nir une fonction d’une classe.

Les variables declarees dans une classe donnee sont accessible dans la de nition des fonc-tions membres de la classe.

// Exemple:

void CDate::Ecrit(FILE* f)

{

printf(f, « %d %d %d » , jour, mois annee);

}

  • Fichier: date.cpp
  • Cette fonction change la date. CDate::Change(int nouv_jour,

int nouv_mois,

int nouv_annee)

{

jour = nouv_jour;

mois = nouv_mois;

annee = nouv_annee;

}

// Jour courant.

int CDate::Jour() const

{

return jour;

}

Exemple d’utilisation

void main()

{

CDate date;

date.Change(3, 1, 2000); // Y2K proof!

date.Suivante();

date.Ecrit(stdout);

date.jour = 4; // Illegal!

// Le compilateur va

// se plaindre…

int jour = date.Jour();

}

Constructeurs

Dans le programme precedent,

CDate date;

date.Change(3, 1, 2000);

c’est un peut long, on peut faire mieux avec un constructeur: c’est une fonction mem-bre speciale qui construit un objet a partir de valeurs initiales.

Syntaxe:

  • Dans date.h class CDate { public:

CDate();

CDate(int jour, int mois, int annee); /* … */

};

  • Dans date.cpp,
  • on definit deux fonctions:

CDate::CDate() :

jour(0), mois(0), annee(0)

{

}

CDate::CDate(int p_jour,

int p_mois,

int p_annee) :

jour(p_jour), mois(p_mois), annee(p_annee)

{

}

// Utilisation (dans main()):

CDate date1;

CDate date2(25,12,1999);

Destructeurs

Sert a faire le « menage » lorsqu’un objet cesse d’exister…

Par convention, cette fonction porte le nom de la classe pre x du caractere~

Usuellement, si une allocation de memoire a et e ectuee dans un constructeur, on libere la memoire dans le destructeur.

Telecharger PDF