Um método importante para organizar o código é a utilização de espaços de nomes.
Duas funções podem ter uma colisão de nomes, que se pode resolver se as colocarmos em espaços de nomes diferentes.
Os espaços de nomes podem ser aninhados, o que pode ajudar a estruturar grandes bases de código.
O acesso aos espaços de nomes 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 ao prefixar os respetivos espaços de nomes.
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()};
Trabalhas num prestigiado escritório de advogados especializado em tratar pedidos testamentários únicos.
Neste exercício, vais abrir um cofre misterioso. És o testamenteiro da herança e vais reunir os códigos secretos, guardados há muito tempo, de três famílias, para obter um número de conta e o código correspondente.
Para impedir que qualquer família abra o cofre sozinha, ele só pode ser aberto combinando o conhecimento delas com um modificador secreto que conheces do testamento.
Tens três tarefas, todas relacionadas com ajudar as famílias a abrir o cofre.
Define um namespace chamado estate_executor.
O código das tarefas seguintes deve ser definido no corpo do namespace estate_executor.
namespace some_name {
// The space between the curly brackets
// is called body of the namespace.
}
Este é o teu grande momento. Só tu tens a chave modificadora secreta para revelar o número de conta secreto.
Define a função assemble_account_number(int secret_modifier), que recebe o modificador secreto como argumento e devolve o número de conta montado como um int.
Para obter o número correto, tens de somar a bank_number_part de cada uma das três famílias.
As instruções do testamento pedem-te que somes todos os fragmentos azuis e, depois, todos os vermelhos. O código resultante obtém-se multiplicando as duas somas.
Define a função assemble_code(), que devolve o código resultante, combinando os fragmentos das três famílias num único integer.
A função não tem argumentos e baseia-se apenas na informação dos namespaces relevantes das famílias.
Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.