Percursos
/
C++
C++
/
Programa
/
Namespaces
Na

Namespaces em C++

3 exercícios

Sobre Namespaces

Uma forma importante de organizar o código são os namespaces. Duas funções podem ter uma colisão de nomes, que pode ser resolvida colocando-as em namespaces diferentes. Os namespaces podem ser aninhados, o que pode ajudar a estruturar grandes bases de código. O acesso aos namespaces faz-se através do operador de resolução de âmbito ::.

O exemplo abaixo mostra a utilização de duas funções foo diferentes. São usadas em conjunto, prefixando cada uma com o respetivo namespace.

namespace my_ns {
    int foo() {
        return 44;
    }
    namespace my_inner_ns {
        int baz() {
            return 90;
        }
    }
}
namespace my_other_ns {
    int foo() {
        return -2;
    }
}
int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};
Advanced

Namespaces profundamente aninhados podem tornar-se demasiado verbosos. É possível reduzir essa verbosidade com uma importação de namespaces através de using. Isto move todos os nomes para o namespace global. Para manter alguma diferenciação, os alias podem ser úteis.

int my_other_result{my_ns::my_inner_ns::baz()};

using namespace my_ns::my_inner_ns; // importing the complete namespace
int also_other_result{baz()};

namespace m = my_ns; // setting an alias
namespace o = my_other_ns;

int also_my_result{m::foo() + o::foo() * m::my_inner_ns::baz()};
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Namespaces