- Esercizio 1: Creazione di un namespace
- Esercizio 2: Alias di namespace
- Esercizio 3: Namespace annidati
- Esercizio 4: Uso di using per importare un namespace
- Esercizio 5: Conflitto di nomi con namespace
- Esercizio 6: Definizione di variabili in un namespace
- Esercizio 7: Funzioni sovraccariche in un namespace
- Esercizio 8: Namespace anonimi
- Esercizio 9: Namespace e classi
- Esercizio 10: Namespace e template
Ecco degli esercizi semplici con soluzione per praticare l’utilizzo dei namespace in C++.
Esercizio 1: Creazione di un namespace
Creare un namespace e definire una funzione all'interno di esso.
#include <iostream>
namespace MyNamespace { void saluta() { std::cout << "Ciao dal namespace!" << std::endl; }}
int main() { MyNamespace::saluta(); return 0;}
Esercizio 2: Alias di namespace
Creare un alias per un namespace e utilizzare l'alias per chiamare una funzione.
#include <iostream>
namespace MyNamespace { void saluta() { std::cout << "Ciao dal namespace!" << std::endl; }}
namespace MN = MyNamespace;
int main() { MN::saluta(); return 0;}
Esercizio 3: Namespace annidati
Creare un namespace annidato e definire una funzione nel namespace interno.
#include <iostream>
namespace OuterNamespace { namespace InnerNamespace { void saluta() { std::cout << "Ciao dal namespace interno!" << std::endl; } }}
int main() { OuterNamespace::InnerNamespace::saluta(); return 0;}
using
per importare un namespace
Esercizio 4: Uso di Utilizzare la direttiva `using` per importare un namespace e chiamare una funzione senza il prefisso del namespace.
#include <iostream>
namespace MyNamespace { void saluta() { std::cout << "Ciao dal namespace!" << std::endl; }}
using namespace MyNamespace;
int main() { saluta(); return 0;}
Esercizio 5: Conflitto di nomi con namespace
Creare due namespace con funzioni con lo stesso nome e chiamare entrambe le funzioni.
#include <iostream>
namespace Namespace1 { void saluta() { std::cout << "Ciao da Namespace1!" << std::endl; }}
namespace Namespace2 { void saluta() { std::cout << "Ciao da Namespace2!" << std::endl; }}
int main() { Namespace1::saluta(); Namespace2::saluta(); return 0;}
Esercizio 6: Definizione di variabili in un namespace
Definire variabili in un namespace e utilizzarle nel programma.
#include <iostream>
namespace MyNamespace { int valore = 10; void stampaValore() { std::cout << "Valore: " << valore << std::endl; }}
int main() { MyNamespace::stampaValore(); return 0;}
Esercizio 7: Funzioni sovraccariche in un namespace
Definire funzioni sovraccariche in un namespace e chiamarle nel programma.
#include <iostream>
namespace MathOperations { int somma(int a, int b) { return a + b; }
double somma(double a, double b) { return a + b; }}
int main() { std::cout << "Somma di interi: " << MathOperations::somma(3, 4) << std::endl; std::cout << "Somma di double: " << MathOperations::somma(2.5, 3.5) << std::endl; return 0;}
Esercizio 8: Namespace anonimi
Utilizzare un namespace anonimo per limitare la visibilitĂ di una funzione all'interno di un file.
#include <iostream>
namespace { void saluta() { std::cout << "Ciao dal namespace anonimo!" << std::endl; }}
int main() { saluta(); return 0;}
Esercizio 9: Namespace e classi
Definire una classe all'interno di un namespace e utilizzare la classe nel programma.
#include <iostream>
namespace Geometry { class Punto { private: int x, y; public: Punto(int x, int y) : x(x), y(y) {} void stampa() const { std::cout << "Punto(" << x << ", " << y << ")" << std::endl; } };}
int main() { Geometry::Punto p(1, 2); p.stampa(); return 0;}
Esercizio 10: Namespace e template
Definire una funzione template all'interno di un namespace e utilizzarla nel programma.
#include <iostream>
namespace Utilities { template <typename T> T somma(T a, T b) { return a + b; }}
int main() { std::cout << "Somma di interi: " << Utilities::somma(3, 4) << std::endl; std::cout << "Somma di double: " << Utilities::somma(2.5, 3.5) << std::endl; return 0;}