Namespaces e Escopo
Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy — lição 4 de 104.
Namespaces agrupam códigos relacionados e evitam conflitos de nomenclatura. O operador de resolução de escopo :: acessa itens dentro de um namespace.
Criando um namespace
namespace MathTools {
int add(int a, int b) {
return a + b;
}
}Acessando com resolução de escopo ::
int result = MathTools::add(5, 3); // result = 8Usando a diretiva para evitar digitar o namespace todas as vezes
using namespace MathTools;
int result = add(5, 3); // O mesmo que MathTools::add(5, 3)O namespace std
std::cout << "Hello" << std::endl;
// or
using namespace std;
cout << "Hello" << endl;Namespaces organizam o código e evitam colisões de nomes. O namespace std contém todos os recursos da biblioteca padrão do C++, como cout, cin, string e endl.
Desafio
MédioCrie funções dentro do namespace MathTools:
add(int a, int b)— retorna a somamultiply(int a, int b)— retorna o produto
Declare-as em MathTools.h e implemente-as em MathTools.cpp.
Folha de consulta
Namespaces agrupam códigos relacionados e evitam conflitos de nomenclatura. O operador de resolução de escopo :: acessa itens dentro de um namespace.
Criando um namespace:
namespace MathTools {
int add(int a, int b) {
return a + b;
}
}Acessando com a resolução de escopo :::
int result = MathTools::add(5, 3); // result = 8Usando a diretiva para evitar digitar o namespace todas as vezes:
using namespace MathTools;
int result = add(5, 3); // Same as MathTools::add(5, 3)O namespace std contém todos os recursos da biblioteca padrão do C++, como cout, cin, string e endl:
std::cout << "Hello" << std::endl;
// or
using namespace std;
cout << "Hello" << endl;Experimente você mesmo
#include <iostream>
#include "MathTools.h"
int main() {
int a, b;
std::cin >> a >> b;
std::cout << "Add: " << MathTools::add(a, b) << std::endl;
std::cout << "Multiply: " << MathTools::multiply(a, b) << std::endl;
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de OOP
Arquivos ExternosBuild e Compilação em C++Arquivos Header e SourceNamespaces e EscopoIntrodução a OOP em C++Classes vs ObjetosO Ponteiro 'this'Métodos (Funções Membro)Atributos (Membros de Dados)Básico de Ctors e DtorsRecapitulação - Calculadora Simples4Propriedades de Classe
Membros de Instância vs EstáticosGetters e SettersFunções de Membro ConstPalavra-chave MutableMétodos e Variáveis EstáticosFunções e Classes FriendRecapitulação - Gerenciador de Conta Bancária7Herança
Herança BásicaNíveis de Acesso na HerançaOrdem de Chamada de Ctor e DtorSobrescrita de MétodosFunções Virtuais e VTableHerança MúltiplaHerança VirtualRecapitulação - Hierarquia de Funcionários2Gerenciamento de Memória
Memória Stack vs HeapPonteiros e ReferênciasMemória Dinâmica (new/delete)Smart Pointers em C++RAII em C++Recapitulação - Gerenciador de Array Dinâmico5Encapsulamento
Especificadores de Acesso em C++Especificadores de Acesso em DetalhesOcultação de InformaçãoStruct vs ClassClasses Aninhadas e InternasRecapitulação - Sistema de Registros de Alunos8Polimorfismo
Polimorfismo de Compilação vs Tempo de ExecuçãoSobrecarga de FunçõesFunções Virtuais RevisitadasFunções Virtuais PurasClasses AbstratasDesign de Interfaces em C++Dynamic Casting e RTTIRecapitulação - Calculadora de Formas3Construtores e Destrutores
Construtor PadrãoConstrutor ParametrizadoConstrutor de CópiaConstrutor de MovimentaçãoListas de Inicialização do ConstrutorConstrutores DelegadosMergulho Profundo em DestrutoresRegra dos Três / Cinco / ZeroRecapitulação - Classe String6Sobrecarga de Operadores
Introdução à Sobrecarga de OperadoresSobrecarga de Operadores AritméticosSobrecarga de Operadores de ComparaçãoOperadores de StreamSobrecarga do Operador de AtribuiçãoSobrecarga dos Operadores [] e ()Operadores de Conversão de TipoRecapitulação - Classe Matrix9Templates
Templates de FunçãoTemplates de ClasseEspecialização de TemplatesTemplates VariádicosFundamentos de SFINAE e Type TraitsRecapitulação - Container Genérico