📢 Nuovo Corso Bootstrap Completo disponibile!

Esercizi Namespace C++

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;
}

Esercizio 4: Uso di using per importare un namespace

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;
}