static - non-membre attributes et non-membre fonction

Sources d'information

Librairie(s) requise(s)

iostream

Comment ça marche

Une fonction non-membre est rattachée à la classe, pas à l'objet

(variables et fonctions d'instance) = membre

(variables et fonctions de classe) = non-membre --> static

Dans le fichier .hpp.

class Sample {

public:

    Sample(void);
    ~Sample(void);

    static int getNbInst(void);

private:

    static int _nbInst;

};

Ajouter ensuite les méthodes dans le fichier .cpp

Ici on comptabilise chaque instance crée ou detruite.

Ne pas oublier d'initialiser l'attribut non-membre !

int	Sample::_nbInst = 0;

Sample::Sample(void)
{
    std::cout << "Constructor called" << std::endl;
    Sample::_nbInst += 1;

    return;
}

Sample::~Sample(void)
{
    std::cout << "Destructor called" << std::endl;
    Sample::_nbInst -= 1;
    return;
}

Ici il n'y a pas de paramètre d'instance passé et donc il n'y aura jamais de this-> !

int	Sample::getNbInst(void)
{
	return Sample::_nbInst;
}

Dans le main.cpp


std::cout << "Number of instances = " << Sample::getNbInst() << std::endl;

retour


© 2022, vroch
Revisé le : 29 oct 2022
URL : http://vroch.ch/vr_tech_035.html
Main : http://vroch.ch