Esercizi Metodi e Attributi Statici C++
Codegrind Team•Jul 12 2024
Ecco degli esercizi semplici con soluzione per praticare l’utilizzo dei metodi e attributi statici in C++.
Esercizio 1: Attributo statico semplice
Creare una classe con un attributo statico e un metodo per incrementarlo.
#include <iostream>
class Contatore {
private:
static int contatore;
public:
static void incrementa() {
contatore++;
}
static int getContatore() {
return contatore;
}
};
int Contatore::contatore = 0;
int main() {
Contatore::incrementa();
Contatore::incrementa();
std::cout << "Valore del contatore: " << Contatore::getContatore() << std::endl;
return 0;
}
Esercizio 2: Metodo statico semplice
Creare una classe con un metodo statico che stampa un messaggio.
#include <iostream>
class Messaggio {
public:
static void stampa() {
std::cout << "Ciao, mondo!" << std::endl;
}
};
int main() {
Messaggio::stampa();
return 0;
}
Esercizio 3: Attributo statico condiviso
Creare una classe con un attributo statico condiviso tra tutte le istanze della classe.
#include <iostream>
class Condiviso {
public:
static int valoreCondiviso;
void incrementa() {
valoreCondiviso++;
}
};
int Condiviso::valoreCondiviso = 0;
int main() {
Condiviso obj1, obj2;
obj1.incrementa();
obj2.incrementa();
std::cout << "Valore condiviso: " << Condiviso::valoreCondiviso << std::endl;
return 0;
}
Esercizio 4: Contatore di istanze
Creare una classe che tiene traccia del numero di istanze create usando un attributo statico.
#include <iostream>
class Istanza {
private:
static int contatore;
public:
Istanza() {
contatore++;
}
static int getNumeroIstanze() {
return contatore;
}
};
int Istanza::contatore = 0;
int main() {
Istanza obj1, obj2, obj3;
std::cout << "Numero di istanze create: " << Istanza::getNumeroIstanze() << std::endl;
return 0;
}
Esercizio 5: Metodo statico con parametri
Creare una classe con un metodo statico che accetta parametri e restituisce un valore.
#include <iostream>
class Matematica {
public:
static int somma(int a, int b) {
return a + b;
}
};
int main() {
int risultato = Matematica::somma(3, 4);
std::cout << "Somma: " << risultato << std::endl;
return 0;
}
Esercizio 6: Inizializzazione di attributi statici complessi
Creare una classe con un attributo statico complesso (ad esempio, un std::vector) e un metodo per manipolarlo.
#include <iostream>
#include <vector>
class Collezione {
private:
static std::vector<int> valori;
public:
static void aggiungiValore(int valore) {
valori.push_back(valore);
}
static void stampaValori() {
for (int valore : valori) {
std::cout << valore << " ";
}
std::cout << std::endl;
}
};
std::vector<int> Collezione::valori;
int main() {
Collezione::aggiungiValore(1);
Collezione::aggiungiValore(2);
Collezione::aggiungiValore(3);
Collezione::stampaValori();
return 0;
}
Esercizio 7: Classe con costante statica
Creare una classe con un attributo costante statico.
#include <iostream>
class Costante {
public:
static const int valoreCostante = 100;
};
int main() {
std::cout << "Valore costante: " << Costante::valoreCostante << std::endl;
return 0;
}
Esercizio 8: Contatore di istanze distrutte
Creare una classe che tiene traccia del numero di istanze distrutte usando un attributo statico.
#include <iostream>
class Istanza {
private:
static int contatore;
public:
Istanza() {
contatore++;
}
~Istanza() {
contatore--;
}
static int getNumeroIstanze() {
return contatore;
}
};
int Istanza::contatore = 0;
int main() {
{
Istanza obj1, obj2;
std::cout << "Numero di istanze create: " << Istanza::getNumeroIstanze() << std::endl;
}
std::cout << "Numero di istanze create dopo distruzione: " << Istanza::getNumeroIstanze() << std::endl;
return 0;
}